@p2pdotme/sdk 1.2.15 → 1.2.17

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.
package/dist/country.mjs CHANGED
@@ -597,18 +597,10 @@ var NGN_COUNTRY_OPTION = {
597
597
  disabledPaymentTypes: []
598
598
  };
599
599
 
600
- // src/country/currencies/pen.ts
601
- var PEN_PLACEHOLDER = "CCI (20 digits) or Yape/Plin phone (9XXXXXXXX)";
602
- var PEN_VALIDATION_ERROR = "Please enter a valid 20-digit CCI or Yape/Plin phone number";
603
- function validatePeruvianPaymentKey(value) {
604
- if (!value || value.trim().length === 0) return false;
605
- const trimmed = value.trim();
606
- const cci = trimmed.replace(/\s+/g, "");
607
- if (/^\d{20}$/.test(cci)) return true;
608
- const phone = trimmed.replace(/\s+/g, "").replace(/^\+?51/, "");
609
- if (/^9\d{8}$/.test(phone)) return true;
610
- return false;
611
- }
600
+ // src/country/types.ts
601
+ var PACKED_PAYMENT_ID_SEP = "||";
602
+
603
+ // src/country/qr-validator.ts
612
604
  function crc16ccitt(s) {
613
605
  let crc = 65535;
614
606
  for (let i = 0; i < s.length; i++) {
@@ -643,14 +635,145 @@ function validatePeruvianQr(payload) {
643
635
  const expected = crc16ccitt(data.substring(0, marker + 4));
644
636
  return expected.toUpperCase() === crcTag.toUpperCase();
645
637
  }
638
+ function validateVenezuelanQr(payload) {
639
+ if (!payload || typeof payload !== "string") return false;
640
+ const trimmed = payload.trim();
641
+ if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
642
+ const qIdx = trimmed.indexOf("?");
643
+ if (qIdx < 40) return false;
644
+ const blob = trimmed.substring(0, qIdx);
645
+ if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
646
+ return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
647
+ }
648
+
649
+ // src/country/currencies/pen.ts
650
+ var PEN_PHONE_PLACEHOLDER = "PERU_PHONE_PLACEHOLDER";
651
+ var PEN_CCI_PLACEHOLDER = "PERU_CCI_PLACEHOLDER";
652
+ var PEN_PHONE_VALIDATION_ERROR = "Please enter a valid Yape/Plin phone (9XXXXXXXX)";
653
+ var PEN_CCI_VALIDATION_ERROR = "Please enter a valid 20-digit CCI";
654
+ function validatePeruvianCci(value) {
655
+ if (!value || value.trim().length === 0) return false;
656
+ return /^\d{20}$/.test(value.trim().replace(/\s+/g, ""));
657
+ }
658
+ function validatePeruvianPhone(value) {
659
+ if (!value || value.trim().length === 0) return false;
660
+ const phone = value.trim().replace(/\s+/g, "").replace(/^\+?51/, "");
661
+ return /^9\d{8}$/.test(phone);
662
+ }
663
+ function validatePeruvianPaymentKey(value) {
664
+ return validatePeruvianCci(value) || validatePeruvianPhone(value);
665
+ }
666
+ function normalizePeruvianPaymentKey(value) {
667
+ const trimmed = value.trim();
668
+ const cci = trimmed.replace(/\s+/g, "");
669
+ if (/^\d{20}$/.test(cci)) return cci;
670
+ const phone = trimmed.replace(/\s+/g, "").replace(/^\+?51/, "");
671
+ if (/^9\d{8}$/.test(phone)) return phone;
672
+ return cci;
673
+ }
674
+ function looksLikeTlv(value) {
675
+ if (value.length < 5 || !/^\d{4}/.test(value)) return false;
676
+ const len = Number.parseInt(value.slice(2, 4), 10);
677
+ return !Number.isNaN(len) && len >= 0 && 4 + len <= value.length;
678
+ }
679
+ function phoneFromTlvValue(value) {
680
+ const trimmed = value.trim();
681
+ if (!trimmed) return null;
682
+ if (validatePeruvianPhone(trimmed)) return normalizePeruvianPaymentKey(trimmed);
683
+ if (/^[0-9a-f]+$/i.test(trimmed) && /[a-f]/i.test(trimmed)) return null;
684
+ const match = trimmed.match(/(^|[^0-9])(\+?51)?(9\d{8})(?![0-9])/);
685
+ if (!match) return null;
686
+ const candidate = `${match[2] ?? ""}${match[3]}`;
687
+ return validatePeruvianPhone(candidate) ? normalizePeruvianPaymentKey(candidate) : null;
688
+ }
689
+ function extractPeruvianPhoneFromQr(payload) {
690
+ let pos = 0;
691
+ while (pos + 4 <= payload.length) {
692
+ const tag = payload.slice(pos, pos + 2);
693
+ const len = Number.parseInt(payload.slice(pos + 2, pos + 4), 10);
694
+ if (Number.isNaN(len) || len < 0 || pos + 4 + len > payload.length) break;
695
+ const value = payload.slice(pos + 4, pos + 4 + len);
696
+ const direct = phoneFromTlvValue(value);
697
+ if (direct) return direct;
698
+ if (tag >= "02" && tag <= "51" || tag === "62" || tag === "64" || looksLikeTlv(value)) {
699
+ const nested = extractPeruvianPhoneFromQr(value);
700
+ if (nested) return nested;
701
+ }
702
+ pos += 4 + len;
703
+ }
704
+ const glued = payload.match(/\+51\s*9\d{8}/);
705
+ if (glued && validatePeruvianPhone(glued[0])) {
706
+ return normalizePeruvianPaymentKey(glued[0]);
707
+ }
708
+ return null;
709
+ }
710
+ function parsePeruvianFallback(value) {
711
+ const trimmed = value.trim();
712
+ if (!trimmed) return { phone: null, cci: null };
713
+ const tokens = trimmed.split("|").map((token) => token.trim()).filter(Boolean);
714
+ let phone = null;
715
+ let cci = null;
716
+ for (const token of tokens) {
717
+ if (!phone && validatePeruvianPhone(token)) {
718
+ phone = normalizePeruvianPaymentKey(token);
719
+ continue;
720
+ }
721
+ if (!cci && validatePeruvianCci(token)) {
722
+ cci = normalizePeruvianPaymentKey(token);
723
+ }
724
+ }
725
+ return { phone, cci };
726
+ }
727
+ function parsePeruvianPaymentId(value) {
728
+ if (!value || typeof value !== "string") {
729
+ return { qr: null, phone: null, cci: null };
730
+ }
731
+ const trimmed = value.trim();
732
+ const sep = trimmed.indexOf(PACKED_PAYMENT_ID_SEP);
733
+ if (sep >= 0) {
734
+ const left = trimmed.slice(0, sep);
735
+ const right = trimmed.slice(sep + PACKED_PAYMENT_ID_SEP.length);
736
+ const fallback2 = parsePeruvianFallback(right);
737
+ const qr = validatePeruvianQr(left) ? left : null;
738
+ return {
739
+ qr,
740
+ phone: fallback2.phone ?? (qr ? extractPeruvianPhoneFromQr(qr) : null),
741
+ cci: fallback2.cci
742
+ };
743
+ }
744
+ if (validatePeruvianQr(trimmed)) {
745
+ return {
746
+ qr: trimmed,
747
+ phone: extractPeruvianPhoneFromQr(trimmed),
748
+ cci: null
749
+ };
750
+ }
751
+ const fallback = parsePeruvianFallback(trimmed);
752
+ return { qr: null, phone: fallback.phone, cci: fallback.cci };
753
+ }
754
+ function validatePeruvianPaymentId(value) {
755
+ if (!value || typeof value !== "string") return false;
756
+ const { qr, phone, cci } = parsePeruvianPaymentId(value);
757
+ return Boolean(qr || phone || cci);
758
+ }
646
759
  var PEN_PAYMENT_FIELDS = [
647
760
  {
648
- key: "paymentId",
649
- label: "CCI_YAPE_PLIN",
650
- placeholder: PEN_PLACEHOLDER,
651
- displayLabel: "CCI / Yape / Plin",
652
- validate: validatePeruvianPaymentKey,
653
- validationErrorMessage: PEN_VALIDATION_ERROR
761
+ key: "phone",
762
+ label: "PERU_PHONE_LABEL",
763
+ placeholder: PEN_PHONE_PLACEHOLDER,
764
+ displayLabel: "Yape / Plin phone",
765
+ validate: validatePeruvianPhone,
766
+ validationErrorMessage: PEN_PHONE_VALIDATION_ERROR,
767
+ optional: true
768
+ },
769
+ {
770
+ key: "cci",
771
+ label: "PERU_CCI_LABEL",
772
+ placeholder: PEN_CCI_PLACEHOLDER,
773
+ displayLabel: "CCI",
774
+ validate: validatePeruvianCci,
775
+ validationErrorMessage: PEN_CCI_VALIDATION_ERROR,
776
+ optional: true
654
777
  }
655
778
  ];
656
779
  var PEN_COUNTRY_OPTION = {
@@ -671,7 +794,13 @@ var PEN_COUNTRY_OPTION = {
671
794
  precision: 2,
672
795
  isAlpha: true,
673
796
  disabled: false,
674
- disabledPaymentTypes: []
797
+ disabledPaymentTypes: [],
798
+ uploadPaymentQR: true,
799
+ validateQr: validatePeruvianQr,
800
+ hydrateFieldsFromQr: (qr) => {
801
+ const phone = extractPeruvianPhoneFromQr(qr);
802
+ return phone ? { phone } : {};
803
+ }
675
804
  };
676
805
 
677
806
  // src/country/currencies/php.ts
@@ -766,7 +895,7 @@ var VEN_PLACEHOLDER = "04121234567";
766
895
  var VEN_PLACEHOLDER_RIF = "V12345678";
767
896
  var VEN_PLACEHOLDER_BANK = "Banesco";
768
897
  var VEN_VALIDATION_ERROR = "Please enter a valid phone number (e.g., 04121234567)";
769
- var VEN_VALIDATION_ERROR_RIF = "Please enter a valid C\xE9dula (e.g., V12345678)";
898
+ var VEN_VALIDATION_ERROR_RIF = "Please enter a valid C\xE9dula/RIF (e.g., V12345678, P12345678)";
770
899
  var VEN_VALIDATION_ERROR_BANK = "Please enter a bank name";
771
900
  function validateVenezuelanPhoneNumber(phoneNumber) {
772
901
  if (!phoneNumber || phoneNumber.trim().length === 0) return false;
@@ -778,7 +907,33 @@ function validateVenezuelanPhoneNumber(phoneNumber) {
778
907
  function validateVenezuelanRif(rif) {
779
908
  if (!rif || rif.trim().length === 0) return false;
780
909
  const trimmed = rif.trim().toUpperCase();
781
- return /^V\d+$/.test(trimmed);
910
+ return /^[VEJGRP]\d+$/.test(trimmed);
911
+ }
912
+ function isValidVenezuelanCompound(value) {
913
+ const parts = value.split("|");
914
+ if (parts.length !== 3) return false;
915
+ return validateVenezuelanPhoneNumber(parts[0]) && validateVenezuelanRif(parts[1]) && parts[2].trim().length > 0;
916
+ }
917
+ function parseVenezuelanPaymentId(value) {
918
+ if (!value || typeof value !== "string") return { qr: null, compound: null };
919
+ const trimmed = value.trim();
920
+ const sep = trimmed.indexOf(PACKED_PAYMENT_ID_SEP);
921
+ if (sep >= 0) {
922
+ const left = trimmed.slice(0, sep);
923
+ const right = trimmed.slice(sep + PACKED_PAYMENT_ID_SEP.length);
924
+ return {
925
+ qr: validateVenezuelanQr(left) ? left : null,
926
+ compound: isValidVenezuelanCompound(right) ? right : null
927
+ };
928
+ }
929
+ if (validateVenezuelanQr(trimmed)) return { qr: trimmed, compound: null };
930
+ if (isValidVenezuelanCompound(trimmed)) return { qr: null, compound: trimmed };
931
+ return { qr: null, compound: null };
932
+ }
933
+ function validateVenezuelanPaymentId(value) {
934
+ if (!value || typeof value !== "string") return false;
935
+ const { qr, compound } = parseVenezuelanPaymentId(value);
936
+ return qr !== null || compound !== null;
782
937
  }
783
938
  var VEN_PAYMENT_FIELDS = [
784
939
  {
@@ -793,7 +948,7 @@ var VEN_PAYMENT_FIELDS = [
793
948
  key: "rif",
794
949
  label: "RIF_LABEL",
795
950
  placeholder: VEN_PLACEHOLDER_RIF,
796
- displayLabel: "Cedula con V",
951
+ displayLabel: "C\xE9dula/RIF",
797
952
  validate: validateVenezuelanRif,
798
953
  validationErrorMessage: VEN_VALIDATION_ERROR_RIF
799
954
  },
@@ -825,27 +980,11 @@ var VEN_COUNTRY_OPTION = {
825
980
  precision: 2,
826
981
  isAlpha: false,
827
982
  disabled: false,
828
- disabledPaymentTypes: []
983
+ disabledPaymentTypes: [],
984
+ uploadPaymentQR: true,
985
+ validateQr: validateVenezuelanQr
829
986
  };
830
987
 
831
- // src/country/countries.ts
832
- var COUNTRY_OPTIONS = [
833
- INR_COUNTRY_OPTION,
834
- IDR_COUNTRY_OPTION,
835
- BRL_COUNTRY_OPTION,
836
- ARS_COUNTRY_OPTION,
837
- MEX_COUNTRY_OPTION,
838
- VEN_COUNTRY_OPTION,
839
- NGN_COUNTRY_OPTION,
840
- COP_COUNTRY_OPTION,
841
- CUP_COUNTRY_OPTION,
842
- ECU_COUNTRY_OPTION,
843
- PEN_COUNTRY_OPTION,
844
- PHP_COUNTRY_OPTION,
845
- EUR_COUNTRY_OPTION,
846
- USD_COUNTRY_OPTION
847
- ];
848
-
849
988
  // src/country/payment-fields.ts
850
989
  var PAYMENT_ID_FIELDS = {
851
990
  INR: INR_PAYMENT_FIELDS,
@@ -864,6 +1003,38 @@ var PAYMENT_ID_FIELDS = {
864
1003
  PHP: PHP_PAYMENT_FIELDS
865
1004
  };
866
1005
 
1006
+ // src/country/countries.ts
1007
+ var COUNTRY_OPTIONS = [
1008
+ INR_COUNTRY_OPTION,
1009
+ IDR_COUNTRY_OPTION,
1010
+ BRL_COUNTRY_OPTION,
1011
+ ARS_COUNTRY_OPTION,
1012
+ MEX_COUNTRY_OPTION,
1013
+ VEN_COUNTRY_OPTION,
1014
+ NGN_COUNTRY_OPTION,
1015
+ COP_COUNTRY_OPTION,
1016
+ CUP_COUNTRY_OPTION,
1017
+ ECU_COUNTRY_OPTION,
1018
+ PEN_COUNTRY_OPTION,
1019
+ PHP_COUNTRY_OPTION,
1020
+ EUR_COUNTRY_OPTION,
1021
+ USD_COUNTRY_OPTION
1022
+ ];
1023
+ function getCountryOption(currency) {
1024
+ if (!currency) return void 0;
1025
+ return COUNTRY_OPTIONS.find((c) => c.currency === currency);
1026
+ }
1027
+ function uploadsPaymentQR(currency) {
1028
+ return getCountryOption(currency)?.uploadPaymentQR === true;
1029
+ }
1030
+ function usesPackedPaymentId(currency) {
1031
+ return getCountryOption(currency)?.validateQr != null;
1032
+ }
1033
+ function usesCatalogPaymentForm(currency) {
1034
+ if (!currency) return false;
1035
+ return uploadsPaymentQR(currency) || (PAYMENT_ID_FIELDS[currency]?.length ?? 0) > 1;
1036
+ }
1037
+
867
1038
  // src/country/validators.ts
868
1039
  function serializeCompoundPaymentId(...fields) {
869
1040
  return fields.join("|");
@@ -873,16 +1044,171 @@ function deserializeCompoundPaymentId(paymentId) {
873
1044
  }
874
1045
  function formatCompoundPaymentIdForDisplay(paymentId, labels) {
875
1046
  const parts = deserializeCompoundPaymentId(paymentId);
876
- return parts.map((part, i) => labels[i] ? `${labels[i]}: ${part}` : part).join(" | ");
1047
+ return parts.map((part, i) => {
1048
+ if (!part?.trim()) return null;
1049
+ return labels[i] ? `${labels[i]}: ${part}` : part;
1050
+ }).filter((part) => part !== null).join(" | ");
1051
+ }
1052
+ function validatePaymentIdFields(fields, paymentId) {
1053
+ if (!paymentId || paymentId.trim().length === 0) return false;
1054
+ if (!fields.length) return false;
1055
+ if (fields.length === 1) {
1056
+ return fields[0].validate(paymentId);
1057
+ }
1058
+ const parts = deserializeCompoundPaymentId(paymentId);
1059
+ if (parts.length === 1) {
1060
+ if (!fields.some((field) => field.optional)) return false;
1061
+ return fields.some((field) => field.validate(parts[0]));
1062
+ }
1063
+ const values = fields.map((_, i) => (parts[i] ?? "").trim());
1064
+ const eachOk = fields.every((field, i) => {
1065
+ const value = values[i];
1066
+ if (!value) return field.optional === true;
1067
+ return field.validate(value);
1068
+ });
1069
+ if (!eachOk) return false;
1070
+ return values.some((value) => value.length > 0);
1071
+ }
1072
+ function assignPaymentIdToFieldValues(fields, paymentId) {
1073
+ const result = {};
1074
+ for (const field of fields) result[field.key] = "";
1075
+ if (!paymentId) return result;
1076
+ const { rest } = unpackPackedPaymentId(paymentId);
1077
+ if (!rest) return result;
1078
+ const tokens = deserializeCompoundPaymentId(rest).map((part) => part.trim()).filter((part) => part.length > 0);
1079
+ const claimed = /* @__PURE__ */ new Set();
1080
+ for (const token of tokens) {
1081
+ const field = fields.find((item) => !claimed.has(item.key) && item.validate(token));
1082
+ if (field) {
1083
+ result[field.key] = token;
1084
+ claimed.add(field.key);
1085
+ }
1086
+ }
1087
+ if (claimed.size === 0 && tokens.length === 1 && fields.length === 1) {
1088
+ result[fields[0].key] = tokens[0];
1089
+ return result;
1090
+ }
1091
+ if (claimed.size < Math.min(tokens.length, fields.length)) {
1092
+ fields.forEach((field, i) => {
1093
+ if (!result[field.key]) result[field.key] = tokens[i] ?? "";
1094
+ });
1095
+ }
1096
+ return result;
1097
+ }
1098
+ function unpackPackedPaymentId(paymentId) {
1099
+ const sep = paymentId.indexOf(PACKED_PAYMENT_ID_SEP);
1100
+ if (sep < 0) return { qr: "", rest: paymentId };
1101
+ return {
1102
+ qr: paymentId.slice(0, sep),
1103
+ rest: paymentId.slice(sep + PACKED_PAYMENT_ID_SEP.length)
1104
+ };
1105
+ }
1106
+ function isStandaloneQr(validateQr, value) {
1107
+ return !!validateQr?.(value);
1108
+ }
1109
+ function getStoredQrPayload(currency, paymentId) {
1110
+ if (!currency || !paymentId) return null;
1111
+ const option = getCountryOption(currency);
1112
+ if (!option?.validateQr) return null;
1113
+ const trimmed = paymentId.trim();
1114
+ const { qr } = unpackPackedPaymentId(trimmed);
1115
+ if (qr && option.validateQr(qr)) return qr;
1116
+ if (isStandaloneQr(option.validateQr, trimmed)) return trimmed;
1117
+ return null;
1118
+ }
1119
+ function packedTypedRest(fields, fieldValues) {
1120
+ const parts = fields.map((field) => {
1121
+ const value = (fieldValues[field.key] ?? "").trim();
1122
+ if (!value) return "";
1123
+ return field.validate(value) ? value : "";
1124
+ });
1125
+ if (!parts.some((part) => part.length > 0)) return "";
1126
+ return serializeCompoundPaymentId(...parts);
1127
+ }
1128
+ function packStoredPaymentId(currency, qr, fieldValues) {
1129
+ const fields = PAYMENT_ID_FIELDS[currency] ?? [];
1130
+ const option = getCountryOption(currency);
1131
+ const trimmedQr = qr?.trim() ?? "";
1132
+ const q = trimmedQr && option?.validateQr?.(trimmedQr) ? trimmedQr : "";
1133
+ const rest = packedTypedRest(fields, fieldValues);
1134
+ if (q && rest) return `${q}${PACKED_PAYMENT_ID_SEP}${rest}`;
1135
+ return q || rest;
1136
+ }
1137
+ function fieldsMatchStoredId(fields, paymentId) {
1138
+ if (validatePaymentIdFields(fields, paymentId)) return true;
1139
+ const assigned = assignPaymentIdToFieldValues(fields, paymentId);
1140
+ const filled = fields.filter((field) => (assigned[field.key] || "").trim().length > 0);
1141
+ if (filled.length === 0) return false;
1142
+ return fields.every(
1143
+ (field) => field.optional === true || (assigned[field.key] || "").trim().length > 0
1144
+ );
1145
+ }
1146
+ function validateStoredPaymentId(currency, paymentId) {
1147
+ if (!paymentId || paymentId.trim().length === 0) return false;
1148
+ const fields = PAYMENT_ID_FIELDS[currency];
1149
+ if (!fields?.length) return false;
1150
+ const option = getCountryOption(currency);
1151
+ const trimmed = paymentId.trim();
1152
+ const { qr, rest } = unpackPackedPaymentId(trimmed);
1153
+ if (qr) {
1154
+ if (!option?.validateQr?.(qr)) return false;
1155
+ if (!rest.trim()) return true;
1156
+ return fieldsMatchStoredId(fields, rest);
1157
+ }
1158
+ if (isStandaloneQr(option?.validateQr, trimmed)) return true;
1159
+ return fieldsMatchStoredId(fields, trimmed);
1160
+ }
1161
+ function assignStoredPaymentIdToFieldValues(currency, paymentId) {
1162
+ const fields = PAYMENT_ID_FIELDS[currency] ?? [];
1163
+ const option = getCountryOption(currency);
1164
+ const trimmed = paymentId.trim();
1165
+ const { qr, rest } = unpackPackedPaymentId(trimmed);
1166
+ let qrPayload = "";
1167
+ let typed = rest.trim();
1168
+ if (qr && option?.validateQr?.(qr)) {
1169
+ qrPayload = qr;
1170
+ } else if (isStandaloneQr(option?.validateQr, trimmed)) {
1171
+ qrPayload = trimmed;
1172
+ typed = "";
1173
+ }
1174
+ const values = assignPaymentIdToFieldValues(fields, typed);
1175
+ if (qrPayload && option?.hydrateFieldsFromQr) {
1176
+ const extra = option.hydrateFieldsFromQr(qrPayload);
1177
+ for (const [key, value] of Object.entries(extra)) {
1178
+ if (value && !values[key]) values[key] = value;
1179
+ }
1180
+ }
1181
+ return values;
1182
+ }
1183
+ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1184
+ const fields = PAYMENT_ID_FIELDS[currency] ?? [];
1185
+ const values = assignStoredPaymentIdToFieldValues(currency, paymentId);
1186
+ if (fields.length <= 1) return (values[fields[0]?.key ?? ""] || "").trim();
1187
+ return fields.map((field) => {
1188
+ const value = (values[field.key] || "").trim();
1189
+ if (!value) return null;
1190
+ return field.displayLabel ? `${field.displayLabel}: ${value}` : value;
1191
+ }).filter((part) => part !== null).join(" | ");
877
1192
  }
878
1193
  export {
879
1194
  COUNTRY_OPTIONS,
880
1195
  CURRENCY,
881
1196
  CURRENCY_CODES,
1197
+ PACKED_PAYMENT_ID_SEP,
882
1198
  PAYMENT_ID_FIELDS,
1199
+ assignPaymentIdToFieldValues,
1200
+ assignStoredPaymentIdToFieldValues,
883
1201
  deserializeCompoundPaymentId,
884
1202
  formatCompoundPaymentIdForDisplay,
1203
+ formatStoredPaymentIdForDisplay,
1204
+ getCountryOption,
1205
+ getStoredQrPayload,
1206
+ packStoredPaymentId,
885
1207
  serializeCompoundPaymentId,
1208
+ unpackPackedPaymentId,
1209
+ uploadsPaymentQR,
1210
+ usesCatalogPaymentForm,
1211
+ usesPackedPaymentId,
886
1212
  validateArgentinePaymentId,
887
1213
  validateColombianPaymentId,
888
1214
  validateCubanCardNumber,
@@ -895,12 +1221,19 @@ export {
895
1221
  validateNigerianAccountName,
896
1222
  validateNigerianAccountNumber,
897
1223
  validatePIXId,
1224
+ validatePaymentIdFields,
1225
+ validatePeruvianCci,
1226
+ validatePeruvianPaymentId,
898
1227
  validatePeruvianPaymentKey,
1228
+ validatePeruvianPhone,
899
1229
  validatePeruvianQr,
900
1230
  validatePhilippinePhoneNumber,
901
1231
  validateRevolutId,
1232
+ validateStoredPaymentId,
902
1233
  validateUPIId,
1234
+ validateVenezuelanPaymentId,
903
1235
  validateVenezuelanPhoneNumber,
1236
+ validateVenezuelanQr,
904
1237
  validateVenezuelanRif
905
1238
  };
906
1239
  //# sourceMappingURL=country.mjs.map