@keetanetwork/anchor 0.0.45 → 0.0.48

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 (82) hide show
  1. package/LICENSE +163 -34
  2. package/lib/asset.d.ts +30 -0
  3. package/lib/asset.d.ts.map +1 -0
  4. package/lib/asset.js +78 -0
  5. package/lib/asset.js.map +1 -0
  6. package/lib/certificates.d.ts +11 -38
  7. package/lib/certificates.d.ts.map +1 -1
  8. package/lib/certificates.js +33 -336
  9. package/lib/certificates.js.map +1 -1
  10. package/lib/resolver.d.ts +9 -2
  11. package/lib/resolver.d.ts.map +1 -1
  12. package/lib/resolver.js +195 -159
  13. package/lib/resolver.js.map +1 -1
  14. package/lib/sensitive-attribute.d.ts +87 -0
  15. package/lib/sensitive-attribute.d.ts.map +1 -0
  16. package/lib/sensitive-attribute.js +419 -0
  17. package/lib/sensitive-attribute.js.map +1 -0
  18. package/lib/token-metadata.d.ts +21 -0
  19. package/lib/token-metadata.d.ts.map +1 -0
  20. package/lib/token-metadata.generated.d.ts +5 -0
  21. package/lib/token-metadata.generated.d.ts.map +1 -0
  22. package/lib/token-metadata.generated.js +70 -0
  23. package/lib/token-metadata.generated.js.map +1 -0
  24. package/lib/token-metadata.js +57 -0
  25. package/lib/token-metadata.js.map +1 -0
  26. package/lib/utils/pii.d.ts +128 -0
  27. package/lib/utils/pii.d.ts.map +1 -0
  28. package/lib/utils/pii.js +198 -0
  29. package/lib/utils/pii.js.map +1 -0
  30. package/npm-shrinkwrap.json +2 -2
  31. package/package.json +1 -1
  32. package/services/asset-movement/common.d.ts +7 -29
  33. package/services/asset-movement/common.d.ts.map +1 -1
  34. package/services/asset-movement/common.js +5223 -2660
  35. package/services/asset-movement/common.js.map +1 -1
  36. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.d.ts.map +1 -1
  37. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js +22 -1
  38. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js.map +1 -1
  39. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts +1 -1
  40. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts.map +1 -1
  41. package/services/asset-movement/lib/data/addresses/bank-account/interac.js +13 -3
  42. package/services/asset-movement/lib/data/addresses/bank-account/interac.js.map +1 -1
  43. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts +1 -1
  44. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts.map +1 -1
  45. package/services/asset-movement/lib/data/addresses/bank-account/pix.js +11 -1
  46. package/services/asset-movement/lib/data/addresses/bank-account/pix.js.map +1 -1
  47. package/services/asset-movement/lib/data/addresses/types.generated.d.ts +116 -33
  48. package/services/asset-movement/lib/data/addresses/types.generated.d.ts.map +1 -1
  49. package/services/asset-movement/lib/data/addresses/types.generated.js +102 -26
  50. package/services/asset-movement/lib/data/addresses/types.generated.js.map +1 -1
  51. package/services/asset-movement/lib/data/types.d.ts.map +1 -1
  52. package/services/asset-movement/lib/data/types.js +15 -10
  53. package/services/asset-movement/lib/data/types.js.map +1 -1
  54. package/services/fx/client.d.ts.map +1 -1
  55. package/services/fx/client.js +6 -2
  56. package/services/fx/client.js.map +1 -1
  57. package/services/fx/common.d.ts +14 -6
  58. package/services/fx/common.d.ts.map +1 -1
  59. package/services/fx/common.js +34 -8
  60. package/services/fx/common.js.map +1 -1
  61. package/services/fx/server.d.ts +6 -0
  62. package/services/fx/server.d.ts.map +1 -1
  63. package/services/fx/server.js +52 -10
  64. package/services/fx/server.js.map +1 -1
  65. package/services/kyc/common.d.ts +7 -0
  66. package/services/kyc/common.d.ts.map +1 -1
  67. package/services/kyc/common.generated.js +6 -1
  68. package/services/kyc/common.generated.js.map +1 -1
  69. package/services/kyc/common.js.map +1 -1
  70. package/services/notification/client.d.ts +1 -1
  71. package/services/notification/client.d.ts.map +1 -1
  72. package/services/notification/client.js +65 -2
  73. package/services/notification/client.js.map +1 -1
  74. package/services/notification/common.d.ts +1 -0
  75. package/services/notification/common.d.ts.map +1 -1
  76. package/services/notification/common.js.map +1 -1
  77. package/services/storage/clients/contacts.generated.js +506 -233
  78. package/services/storage/clients/contacts.generated.js.map +1 -1
  79. package/services/storage/server.d.ts +8 -1
  80. package/services/storage/server.d.ts.map +1 -1
  81. package/services/storage/server.js +9 -1
  82. package/services/storage/server.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import * as __typia_transform__assertGuard from "typia/lib/internal/_assertGuard.js";
2
2
  import { createAssert } from 'typia';
3
- export const assertCreateVerificationRequest = (() => { const _iv2 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _iv3 = new Set(["AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW"]); const _iv4 = new Set(["BTN", "MKD", "SLE", "CHE", "AFG", "ALA", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHS", "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BOL", "BES", "BIH", "BWA", "BVT", "BRA", "IOT", "BRN", "BGR", "BFA", "BDI", "CPV", "KHM", "CMR", "CAN", "CYM", "CAF", "TCD", "CHL", "CHN", "CXR", "CCK", "COL", "COM", "COG", "COD", "COK", "CRI", "CIV", "HRV", "CUB", "CUW", "CYP", "CZE", "DNK", "DJI", "DMA", "DOM", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "SWZ", "ETH", "FLK", "FRO", "FJI", "FIN", "FRA", "GUF", "PYF", "ATF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GLP", "GUM", "GTM", "GGY", "GIN", "GNB", "GUY", "HTI", "HMD", "VAT", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "IMN", "ISR", "ITA", "JAM", "JPN", "JEY", "JOR", "KAZ", "KEN", "KIR", "PRK", "KOR", "KWT", "KGZ", "LAO", "LVA", "LBN", "LSO", "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MTQ", "MRT", "MUS", "MYT", "MEX", "FSM", "MDA", "MCO", "MNG", "MNE", "MSR", "MAR", "MOZ", "MMR", "NAM", "NRU", "NPL", "NLD", "NCL", "NZL", "NIC", "NER", "NGA", "NIU", "NFK", "MNP", "NOR", "OMN", "PAK", "PLW", "PAN", "PNG", "PRY", "PER", "PHL", "PCN", "POL", "PRT", "PRI", "QAT", "REU", "ROU", "RUS", "RWA", "BLM", "SHN", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SGP", "SXM", "SVK", "SVN", "SLB", "SOM", "ZAF", "SGS", "SSD", "ESP", "LKA", "SDN", "SUR", "SJM", "SWE", "SYR", "TWN", "TJK", "TZA", "THA", "TLS", "TGO", "TKL", "TON", "TTO", "TUN", "TUR", "TKM", "TCA", "TUV", "UGA", "UKR", "ARE", "GBR", "USA", "UMI", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "VIR", "WLF", "ESH", "YEM", "ZMB", "ZWE"]); const _iv5 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _av7 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _av8 = new Set(["AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW"]); const _av9 = new Set(["BTN", "MKD", "SLE", "CHE", "AFG", "ALA", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHS", "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BOL", "BES", "BIH", "BWA", "BVT", "BRA", "IOT", "BRN", "BGR", "BFA", "BDI", "CPV", "KHM", "CMR", "CAN", "CYM", "CAF", "TCD", "CHL", "CHN", "CXR", "CCK", "COL", "COM", "COG", "COD", "COK", "CRI", "CIV", "HRV", "CUB", "CUW", "CYP", "CZE", "DNK", "DJI", "DMA", "DOM", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "SWZ", "ETH", "FLK", "FRO", "FJI", "FIN", "FRA", "GUF", "PYF", "ATF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GLP", "GUM", "GTM", "GGY", "GIN", "GNB", "GUY", "HTI", "HMD", "VAT", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "IMN", "ISR", "ITA", "JAM", "JPN", "JEY", "JOR", "KAZ", "KEN", "KIR", "PRK", "KOR", "KWT", "KGZ", "LAO", "LVA", "LBN", "LSO", "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MTQ", "MRT", "MUS", "MYT", "MEX", "FSM", "MDA", "MCO", "MNG", "MNE", "MSR", "MAR", "MOZ", "MMR", "NAM", "NRU", "NPL", "NLD", "NCL", "NZL", "NIC", "NER", "NGA", "NIU", "NFK", "MNP", "NOR", "OMN", "PAK", "PLW", "PAN", "PNG", "PRY", "PER", "PHL", "PCN", "POL", "PRT", "PRI", "QAT", "REU", "ROU", "RUS", "RWA", "BLM", "SHN", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SGP", "SXM", "SVK", "SVN", "SLB", "SOM", "ZAF", "SGS", "SSD", "ESP", "LKA", "SDN", "SUR", "SJM", "SWE", "SYR", "TWN", "TJK", "TZA", "THA", "TLS", "TGO", "TKL", "TON", "TTO", "TUN", "TUR", "TKM", "TCA", "TUV", "UGA", "UKR", "ARE", "GBR", "USA", "UMI", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "VIR", "WLF", "ESH", "YEM", "ZMB", "ZWE"]); const _av10 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _io0 = input => Array.isArray(input.countryCodes) && input.countryCodes.every(elem => null !== elem && undefined !== elem && (true === _iv2.has(elem) || "object" === typeof elem && null !== elem && _io1(elem))) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^keeta_aa(.*)/).test(input.account) || RegExp(/^keeta_ab(.*)/).test(input.account) || RegExp(/^keeta_ac(.*)/).test(input.account) || RegExp(/^keeta_ad(.*)/).test(input.account) || RegExp(/^tyblocks_aa(.*)/).test(input.account) || RegExp(/^tyblocks_ab(.*)/).test(input.account) || RegExp(/^tyblocks_ac(.*)/).test(input.account) || RegExp(/^tyblocks_ad(.*)/).test(input.account) || RegExp(/^keeta_ae(.*)/).test(input.account) || RegExp(/^keeta_af(.*)/).test(input.account) || RegExp(/^keeta_ag(.*)/).test(input.account) || RegExp(/^keeta_ah(.*)/).test(input.account) || RegExp(/^tyblocks_ae(.*)/).test(input.account) || RegExp(/^tyblocks_af(.*)/).test(input.account) || RegExp(/^tyblocks_ag(.*)/).test(input.account) || RegExp(/^tyblocks_ah(.*)/).test(input.account) || RegExp(/^keeta_ai(.*)/).test(input.account) || RegExp(/^keeta_aj(.*)/).test(input.account) || RegExp(/^keeta_ak(.*)/).test(input.account) || RegExp(/^keeta_al(.*)/).test(input.account) || RegExp(/^tyblocks_ai(.*)/).test(input.account) || RegExp(/^tyblocks_aj(.*)/).test(input.account) || RegExp(/^tyblocks_ak(.*)/).test(input.account) || RegExp(/^tyblocks_al(.*)/).test(input.account) || RegExp(/^keeta_at(.*)/).test(input.account) || RegExp(/^keeta_aq(.*)/).test(input.account) || RegExp(/^keeta_ar(.*)/).test(input.account) || RegExp(/^keeta_as(.*)/).test(input.account) || RegExp(/^tyblocks_at(.*)/).test(input.account) || RegExp(/^tyblocks_aq(.*)/).test(input.account) || RegExp(/^tyblocks_ar(.*)/).test(input.account) || RegExp(/^tyblocks_as(.*)/).test(input.account) || RegExp(/^keeta_ay(.*)/).test(input.account) || RegExp(/^keeta_az(.*)/).test(input.account) || RegExp(/^keeta_a2(.*)/).test(input.account) || RegExp(/^keeta_a3(.*)/).test(input.account) || RegExp(/^tyblocks_ay(.*)/).test(input.account) || RegExp(/^tyblocks_az(.*)/).test(input.account) || RegExp(/^tyblocks_a2(.*)/).test(input.account) || RegExp(/^tyblocks_a3(.*)/).test(input.account) || RegExp(/^keeta_a4(.*)/).test(input.account) || RegExp(/^keeta_a5(.*)/).test(input.account) || RegExp(/^keeta_a6(.*)/).test(input.account) || RegExp(/^keeta_a7(.*)/).test(input.account) || RegExp(/^tyblocks_a4(.*)/).test(input.account) || RegExp(/^tyblocks_a5(.*)/).test(input.account) || RegExp(/^tyblocks_a6(.*)/).test(input.account) || RegExp(/^tyblocks_a7(.*)/).test(input.account))) && ("object" === typeof input.signed && null !== input.signed && _io4(input.signed)); const _io1 = input => true && true === _iv3.has(input.code) && "string" === typeof input.name && true === _iv4.has(input.longCode) && true === _iv5.has(input.numericCode) && "string" === typeof input.dialCode && (undefined === input.region || "object" === typeof input.region && null !== input.region && false === Array.isArray(input.region) && _io2(input.region)); const _io2 = input => (undefined === input.primary || "object" === typeof input.primary && null !== input.primary && _io3(input.primary)) && (undefined === input.subRegion || "object" === typeof input.subRegion && null !== input.subRegion && _io3(input.subRegion)) && (undefined === input.intermediateRegion || "object" === typeof input.intermediateRegion && null !== input.intermediateRegion && _io3(input.intermediateRegion)); const _io3 = input => "string" === typeof input.name && "string" === typeof input.code; const _io4 = input => "string" === typeof input.nonce && "string" === typeof input.timestamp && "string" === typeof input.signature; const _ao0 = (input, _path, _exceptionable = true) => ((Array.isArray(input.countryCodes) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
3
+ export const assertCreateVerificationRequest = (() => { const _iv2 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _iv3 = new Set(["AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW"]); const _iv4 = new Set(["BTN", "MKD", "SLE", "CHE", "AFG", "ALA", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHS", "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BOL", "BES", "BIH", "BWA", "BVT", "BRA", "IOT", "BRN", "BGR", "BFA", "BDI", "CPV", "KHM", "CMR", "CAN", "CYM", "CAF", "TCD", "CHL", "CHN", "CXR", "CCK", "COL", "COM", "COG", "COD", "COK", "CRI", "CIV", "HRV", "CUB", "CUW", "CYP", "CZE", "DNK", "DJI", "DMA", "DOM", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "SWZ", "ETH", "FLK", "FRO", "FJI", "FIN", "FRA", "GUF", "PYF", "ATF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GLP", "GUM", "GTM", "GGY", "GIN", "GNB", "GUY", "HTI", "HMD", "VAT", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "IMN", "ISR", "ITA", "JAM", "JPN", "JEY", "JOR", "KAZ", "KEN", "KIR", "PRK", "KOR", "KWT", "KGZ", "LAO", "LVA", "LBN", "LSO", "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MTQ", "MRT", "MUS", "MYT", "MEX", "FSM", "MDA", "MCO", "MNG", "MNE", "MSR", "MAR", "MOZ", "MMR", "NAM", "NRU", "NPL", "NLD", "NCL", "NZL", "NIC", "NER", "NGA", "NIU", "NFK", "MNP", "NOR", "OMN", "PAK", "PLW", "PAN", "PNG", "PRY", "PER", "PHL", "PCN", "POL", "PRT", "PRI", "QAT", "REU", "ROU", "RUS", "RWA", "BLM", "SHN", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SGP", "SXM", "SVK", "SVN", "SLB", "SOM", "ZAF", "SGS", "SSD", "ESP", "LKA", "SDN", "SUR", "SJM", "SWE", "SYR", "TWN", "TJK", "TZA", "THA", "TLS", "TGO", "TKL", "TON", "TTO", "TUN", "TUR", "TKM", "TCA", "TUV", "UGA", "UKR", "ARE", "GBR", "USA", "UMI", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "VIR", "WLF", "ESH", "YEM", "ZMB", "ZWE"]); const _iv5 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _av7 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _av8 = new Set(["AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW"]); const _av9 = new Set(["BTN", "MKD", "SLE", "CHE", "AFG", "ALA", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHS", "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BOL", "BES", "BIH", "BWA", "BVT", "BRA", "IOT", "BRN", "BGR", "BFA", "BDI", "CPV", "KHM", "CMR", "CAN", "CYM", "CAF", "TCD", "CHL", "CHN", "CXR", "CCK", "COL", "COM", "COG", "COD", "COK", "CRI", "CIV", "HRV", "CUB", "CUW", "CYP", "CZE", "DNK", "DJI", "DMA", "DOM", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "SWZ", "ETH", "FLK", "FRO", "FJI", "FIN", "FRA", "GUF", "PYF", "ATF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GLP", "GUM", "GTM", "GGY", "GIN", "GNB", "GUY", "HTI", "HMD", "VAT", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "IMN", "ISR", "ITA", "JAM", "JPN", "JEY", "JOR", "KAZ", "KEN", "KIR", "PRK", "KOR", "KWT", "KGZ", "LAO", "LVA", "LBN", "LSO", "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MTQ", "MRT", "MUS", "MYT", "MEX", "FSM", "MDA", "MCO", "MNG", "MNE", "MSR", "MAR", "MOZ", "MMR", "NAM", "NRU", "NPL", "NLD", "NCL", "NZL", "NIC", "NER", "NGA", "NIU", "NFK", "MNP", "NOR", "OMN", "PAK", "PLW", "PAN", "PNG", "PRY", "PER", "PHL", "PCN", "POL", "PRT", "PRI", "QAT", "REU", "ROU", "RUS", "RWA", "BLM", "SHN", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SGP", "SXM", "SVK", "SVN", "SLB", "SOM", "ZAF", "SGS", "SSD", "ESP", "LKA", "SDN", "SUR", "SJM", "SWE", "SYR", "TWN", "TJK", "TZA", "THA", "TLS", "TGO", "TKL", "TON", "TTO", "TUN", "TUR", "TKM", "TCA", "TUV", "UGA", "UKR", "ARE", "GBR", "USA", "UMI", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "VIR", "WLF", "ESH", "YEM", "ZMB", "ZWE"]); const _av10 = new Set(["840", "533", "356", "578", "108", "132", "116", "124", "136", "152", "156", "170", "174", "554", "188", "192", "203", "208", "262", "214", "818", "222", "232", "748", "238", "242", "270", "292", "320", "826", "324", "328", "332", "340", "344", "348", "352", "360", "364", "368", "376", "388", "392", "400", "398", "404", "408", "410", "414", "417", "418", "422", "426", "710", "430", "434", "756", "446", "807", "454", "458", "462", "480", "484", "498", "496", "504", "104", "516", "524", "558", "566", "512", "586", "598", "600", "604", "608", "634", "643", "646", "654", "882", "682", "690", "694", "702", "706", "728", "144", "752", "760", "834", "764", "776", "780", "788", "800", "784", "858", "860", "548", "704", "004", "248", "008", "012", "016", "020", "024", "660", "010", "028", "032", "051", "036", "040", "031", "044", "048", "050", "052", "112", "056", "084", "204", "060", "064", "068", "535", "070", "072", "074", "076", "086", "096", "100", "854", "120", "140", "148", "162", "166", "178", "180", "184", "384", "191", "531", "196", "212", "218", "226", "233", "231", "234", "246", "250", "254", "258", "260", "266", "268", "276", "288", "300", "304", "308", "312", "316", "831", "624", "334", "336", "372", "833", "380", "832", "296", "428", "438", "440", "442", "450", "466", "470", "584", "474", "478", "175", "583", "492", "499", "500", "508", "520", "528", "540", "562", "570", "574", "580", "585", "591", "612", "616", "620", "630", "638", "642", "652", "659", "662", "663", "666", "670", "674", "678", "686", "688", "534", "703", "705", "090", "239", "724", "729", "740", "744", "158", "762", "626", "768", "772", "792", "795", "796", "798", "804", "581", "862", "092", "850", "876", "732", "887", "894", "716"]); const _io0 = input => Array.isArray(input.countryCodes) && input.countryCodes.every(elem => null !== elem && undefined !== elem && (true === _iv2.has(elem) || "object" === typeof elem && null !== elem && _io1(elem))) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^keeta_aa(.*)/).test(input.account) || RegExp(/^keeta_ab(.*)/).test(input.account) || RegExp(/^keeta_ac(.*)/).test(input.account) || RegExp(/^keeta_ad(.*)/).test(input.account) || RegExp(/^tyblocks_aa(.*)/).test(input.account) || RegExp(/^tyblocks_ab(.*)/).test(input.account) || RegExp(/^tyblocks_ac(.*)/).test(input.account) || RegExp(/^tyblocks_ad(.*)/).test(input.account) || RegExp(/^keeta_ae(.*)/).test(input.account) || RegExp(/^keeta_af(.*)/).test(input.account) || RegExp(/^keeta_ag(.*)/).test(input.account) || RegExp(/^keeta_ah(.*)/).test(input.account) || RegExp(/^tyblocks_ae(.*)/).test(input.account) || RegExp(/^tyblocks_af(.*)/).test(input.account) || RegExp(/^tyblocks_ag(.*)/).test(input.account) || RegExp(/^tyblocks_ah(.*)/).test(input.account) || RegExp(/^keeta_ai(.*)/).test(input.account) || RegExp(/^keeta_aj(.*)/).test(input.account) || RegExp(/^keeta_ak(.*)/).test(input.account) || RegExp(/^keeta_al(.*)/).test(input.account) || RegExp(/^tyblocks_ai(.*)/).test(input.account) || RegExp(/^tyblocks_aj(.*)/).test(input.account) || RegExp(/^tyblocks_ak(.*)/).test(input.account) || RegExp(/^tyblocks_al(.*)/).test(input.account) || RegExp(/^keeta_at(.*)/).test(input.account) || RegExp(/^keeta_aq(.*)/).test(input.account) || RegExp(/^keeta_ar(.*)/).test(input.account) || RegExp(/^keeta_as(.*)/).test(input.account) || RegExp(/^tyblocks_at(.*)/).test(input.account) || RegExp(/^tyblocks_aq(.*)/).test(input.account) || RegExp(/^tyblocks_ar(.*)/).test(input.account) || RegExp(/^tyblocks_as(.*)/).test(input.account) || RegExp(/^keeta_ay(.*)/).test(input.account) || RegExp(/^keeta_az(.*)/).test(input.account) || RegExp(/^keeta_a2(.*)/).test(input.account) || RegExp(/^keeta_a3(.*)/).test(input.account) || RegExp(/^tyblocks_ay(.*)/).test(input.account) || RegExp(/^tyblocks_az(.*)/).test(input.account) || RegExp(/^tyblocks_a2(.*)/).test(input.account) || RegExp(/^tyblocks_a3(.*)/).test(input.account) || RegExp(/^keeta_a4(.*)/).test(input.account) || RegExp(/^keeta_a5(.*)/).test(input.account) || RegExp(/^keeta_a6(.*)/).test(input.account) || RegExp(/^keeta_a7(.*)/).test(input.account) || RegExp(/^tyblocks_a4(.*)/).test(input.account) || RegExp(/^tyblocks_a5(.*)/).test(input.account) || RegExp(/^tyblocks_a6(.*)/).test(input.account) || RegExp(/^tyblocks_a7(.*)/).test(input.account))) && ("object" === typeof input.signed && null !== input.signed && _io4(input.signed)) && (undefined === input.redirectURL || "string" === typeof input.redirectURL); const _io1 = input => true && true === _iv3.has(input.code) && "string" === typeof input.name && true === _iv4.has(input.longCode) && true === _iv5.has(input.numericCode) && "string" === typeof input.dialCode && (undefined === input.region || "object" === typeof input.region && null !== input.region && false === Array.isArray(input.region) && _io2(input.region)); const _io2 = input => (undefined === input.primary || "object" === typeof input.primary && null !== input.primary && _io3(input.primary)) && (undefined === input.subRegion || "object" === typeof input.subRegion && null !== input.subRegion && _io3(input.subRegion)) && (undefined === input.intermediateRegion || "object" === typeof input.intermediateRegion && null !== input.intermediateRegion && _io3(input.intermediateRegion)); const _io3 = input => "string" === typeof input.name && "string" === typeof input.code; const _io4 = input => "string" === typeof input.nonce && "string" === typeof input.timestamp && "string" === typeof input.signature; const _ao0 = (input, _path, _exceptionable = true) => ((Array.isArray(input.countryCodes) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
4
4
  method: "createAssert",
5
5
  path: _path + ".countryCodes",
6
6
  expected: "Array<CountrySearchInput>",
@@ -45,6 +45,11 @@ export const assertCreateVerificationRequest = (() => { const _iv2 = new Set(["8
45
45
  path: _path + ".signed",
46
46
  expected: "HTTPSignedField",
47
47
  value: input.signed
48
+ }, _errorFactory)) && (undefined === input.redirectURL || "string" === typeof input.redirectURL || __typia_transform__assertGuard._assertGuard(_exceptionable, {
49
+ method: "createAssert",
50
+ path: _path + ".redirectURL",
51
+ expected: "(string | undefined)",
52
+ value: input.redirectURL
48
53
  }, _errorFactory)); const _ao1 = (input, _path, _exceptionable = true) => true && (true === _av8.has(input.code) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
49
54
  method: "createAssert",
50
55
  path: _path + ".code",
@@ -1 +1 @@
1
- {"version":3,"file":"common.generated.js","sourceRoot":"","sources":["../../../src/services/kyc/common.generated.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMrC,MAAM,CAAC,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAoI,CAAC;AACjL,MAAM,CAAC,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAsI,CAAC","sourcesContent":["import { createAssert } from 'typia';\nimport type {\n\tKeetaKYCAnchorCreateVerificationRequest,\n\tKeetaKYCAnchorCreateVerificationResponse\n} from './common.ts';\n\nexport const assertCreateVerificationRequest: ReturnType<typeof createAssert<KeetaKYCAnchorCreateVerificationRequest>> = createAssert<KeetaKYCAnchorCreateVerificationRequest>();\nexport const assertCreateVerificationResponse: ReturnType<typeof createAssert<KeetaKYCAnchorCreateVerificationResponse>> = createAssert<KeetaKYCAnchorCreateVerificationResponse>();\n"]}
1
+ {"version":3,"file":"common.generated.js","sourceRoot":"","sources":["../../../src/services/kyc/common.generated.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMrC,MAAM,CAAC,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAoI,CAAC;AACjL,MAAM,CAAC,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAsI,CAAC","sourcesContent":["import { createAssert } from 'typia';\nimport type {\n\tKeetaKYCAnchorCreateVerificationRequest,\n\tKeetaKYCAnchorCreateVerificationResponse\n} from './common.ts';\n\nexport const assertCreateVerificationRequest: ReturnType<typeof createAssert<KeetaKYCAnchorCreateVerificationRequest>> = createAssert<KeetaKYCAnchorCreateVerificationRequest>();\nexport const assertCreateVerificationResponse: ReturnType<typeof createAssert<KeetaKYCAnchorCreateVerificationResponse>> = createAssert<KeetaKYCAnchorCreateVerificationResponse>();\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/services/kyc/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tServiceMetadata,\n\tServiceSearchCriteria\n} from '../../lib/resolver.ts';\nimport * as KeetaNet from '@keetanetwork/keetanet-client';\nimport * as Signing from '../../lib/utils/signing.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\n\ntype KeetaNetToken = InstanceType<typeof KeetaNet.lib.Account<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>>;\n\nexport type CountryCodesSearchCriteria = ServiceSearchCriteria<'kyc'>['countryCodes'];\n\nexport type Operations = NonNullable<ServiceMetadata['services']['kyc']>[string]['operations'];\nexport type OperationNames = keyof Operations;\n\nexport interface KeetaKYCAnchorCreateVerificationRequest {\n\tcountryCodes: CountryCodesSearchCriteria;\n\taccount: ReturnType<InstanceType<typeof KeetaNet.lib.Account>['publicKeyString']['get']>;\n\tsigned: HTTPSignedField;\n}\n\ntype KeetaNetTokenPublicKeyString = ReturnType<InstanceType<typeof KeetaNet.lib.Account<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>>['publicKeyString']['get']>;\nexport type KeetaKYCAnchorCreateVerificationResponse = ({\n\tok: true;\n\n\t/**\n\t * The ID of the verification request -- this is a unique identifier\n\t * for the verification request that can be used to fetch the\n\t * certificate later\n\t */\n\tid: string;\n\t/**\n\t * The expected cost of the verification request, in the form of a\n\t * token and a range of minimum and maximum expected costs\n\t */\n\texpectedCost: {\n\t\tmin: string;\n\t\tmax: string;\n\t\ttoken: KeetaNetTokenPublicKeyString;\n\t};\n\t/**\n\t * The URL to the verification service where the user can complete the\n\t * verification process. This URL is expected to be a web URL that the\n\t * user can visit to complete the verification.\n\t */\n\twebURL: string;\n} | {\n\tok: false;\n\terror: string;\n});\n\nexport type KeetaKYCAnchorGetCertificateResponse = ({\n\tok: true;\n\t/**\n\t * The certificates that were issued by the KYC Anchor service.\n\t * Typically this will just be a single certificate, but\n\t * it could also be multiple certificates if the service\n\t * issues multiple certificates for a single verification.\n\t *\n\t * Each certificate is represented as a PEM-encoded string.\n\t * The `intermediates` field is optional and may contain\n\t * additional intermediate certificates that are required to\n\t * validate the certificate chain.\n\t */\n\tresults: ({\n\t\tcertificate: string;\n\t\tintermediates?: string[];\n\t})[];\n} | {\n\tok: false;\n\terror: string;\n});\n\nclass KeetaKYCAnchorVerificationNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorVerificationNotFoundError';\n\tprivate readonly KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID = '79d7036f-58ad-4eec-b64c-26bdf98cd3c1';\n\toverride readonly logLevel = 'DEBUG';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Verification ID not found');\n\t\tthis.statusCode = 400;\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorVerificationNotFoundError.KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorVerificationNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID', KeetaKYCAnchorVerificationNotFoundError.KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID));\n\t}\n}\n\nclass KeetaKYCAnchorCertificateNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorCertificateNotFoundError';\n\tprivate readonly KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID = '6f4d9620-df33-468e-ae03-898d4fa67aeb';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Certificate not found (pending)');\n\t\tthis.statusCode = 404;\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorCertificateNotFoundError.KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorCertificateNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID', KeetaKYCAnchorCertificateNotFoundError.KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID));\n\t}\n}\n\nclass KeetaKYCAnchorCertificatePaymentRequired extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorCertificatePaymentRequired';\n\tprivate readonly KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID = '92b2481d-b29b-4fa2-a295-3a47d99c0869';\n\treadonly amount: bigint;\n\treadonly token: KeetaNetToken;\n\n\tconstructor(cost: { amount: bigint | string; token: KeetaNetToken | string; }, message?: string) {\n\t\tsuper(message ?? 'Payment required for certificate');\n\t\tthis.statusCode = 402;\n\n\t\tthis.amount = BigInt(cost.amount);\n\t\tthis.token = KeetaNet.lib.Account.toAccount<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>(cost.token);\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorCertificatePaymentRequired.KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorCertificatePaymentRequired {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID', KeetaKYCAnchorCertificatePaymentRequired.KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID));\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\tlet message = this.message;\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\tok: false,\n\t\t\t\tcode: 'KEETA_ANCHOR_KYC_PAYMENT_REQUIRED',\n\t\t\t\tdata: {\n\t\t\t\t\tcost: {\n\t\t\t\t\t\tamount: `0x${this.amount.toString(16)}`,\n\t\t\t\t\t\ttoken: this.token.publicKeyString.get()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: this.message\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): { ok: false; retryable: boolean; error: string; name: string; statusCode: number; amount: string; token: string } {\n\t\treturn({\n\t\t\tok: false,\n\t\t\tretryable: this.retryable,\n\t\t\terror: this.message,\n\t\t\tname: this.name,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tamount: `0x${this.amount.toString(16)}`,\n\t\t\ttoken: this.token.publicKeyString.get()\n\t\t});\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaKYCAnchorCertificatePaymentRequired> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\n\t\t// Extract required properties specific to PaymentRequired\n\t\tif (!('amount' in other) || typeof other.amount !== 'string') {\n\t\t\tthrow(new Error('Invalid KeetaKYCAnchorCertificatePaymentRequired JSON object: missing or invalid amount'));\n\t\t}\n\n\t\tif (!('token' in other) || typeof other.token !== 'string') {\n\t\t\tthrow(new Error('Invalid KeetaKYCAnchorCertificatePaymentRequired JSON object: missing or invalid token'));\n\t\t}\n\n\t\tconst error = new this(\n\t\t\t{\n\t\t\t\tamount: other.amount,\n\t\t\t\ttoken: other.token\n\t\t\t},\n\t\t\tmessage\n\t\t);\n\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nexport const Errors: {\n\tVerificationNotFound: typeof KeetaKYCAnchorVerificationNotFoundError;\n\tCertificateNotFound: typeof KeetaKYCAnchorCertificateNotFoundError;\n\tPaymentRequired: typeof KeetaKYCAnchorCertificatePaymentRequired;\n} = {\n\t/**\n\t * The verification ID was not found\n\t */\n\tVerificationNotFound: KeetaKYCAnchorVerificationNotFoundError,\n\n\t/**\n\t * The certificate for the verification ID was not found\n\t * (typically this means the verification is still pending)\n\t */\n\tCertificateNotFound: KeetaKYCAnchorCertificateNotFoundError,\n\n\t/**\n\t * Payment is required for the certificate\n\t */\n\tPaymentRequired: KeetaKYCAnchorCertificatePaymentRequired\n}\n\nexport async function generateSignedData(account: Signing.SignableAccount): Promise<{ nonce: string; timestamp: string; signature: string; }> {\n\treturn(await Signing.SignData(account, []));\n}\n\nexport async function verifySignedData(request: Pick<KeetaKYCAnchorCreateVerificationRequest, 'account' | 'signed'>): Promise<boolean> {\n\tconst account = KeetaNet.lib.Account.fromPublicKeyString(request.account);\n\treturn(await Signing.VerifySignedData(account, [], request.signed));\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/services/kyc/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tServiceMetadata,\n\tServiceSearchCriteria\n} from '../../lib/resolver.ts';\nimport * as KeetaNet from '@keetanetwork/keetanet-client';\nimport * as Signing from '../../lib/utils/signing.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\n\ntype KeetaNetToken = InstanceType<typeof KeetaNet.lib.Account<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>>;\n\nexport type CountryCodesSearchCriteria = ServiceSearchCriteria<'kyc'>['countryCodes'];\n\nexport type Operations = NonNullable<ServiceMetadata['services']['kyc']>[string]['operations'];\nexport type OperationNames = keyof Operations;\n\nexport type KYCRedirectStatus = 'completed' | 'cancelled' | 'failed';\n\nexport interface KeetaKYCAnchorCreateVerificationRequest {\n\tcountryCodes: CountryCodesSearchCriteria;\n\taccount: ReturnType<InstanceType<typeof KeetaNet.lib.Account>['publicKeyString']['get']>;\n\tsigned: HTTPSignedField;\n\t/**\n\t * An optional URL that the KYC provider will redirect the user to\n\t * after the verification flow ends. The provider appends a\n\t * {@link KYCRedirectStatus} query parameter indicating the outcome.\n\t */\n\tredirectURL?: string;\n}\n\ntype KeetaNetTokenPublicKeyString = ReturnType<InstanceType<typeof KeetaNet.lib.Account<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>>['publicKeyString']['get']>;\nexport type KeetaKYCAnchorCreateVerificationResponse = ({\n\tok: true;\n\n\t/**\n\t * The ID of the verification request -- this is a unique identifier\n\t * for the verification request that can be used to fetch the\n\t * certificate later\n\t */\n\tid: string;\n\t/**\n\t * The expected cost of the verification request, in the form of a\n\t * token and a range of minimum and maximum expected costs\n\t */\n\texpectedCost: {\n\t\tmin: string;\n\t\tmax: string;\n\t\ttoken: KeetaNetTokenPublicKeyString;\n\t};\n\t/**\n\t * The URL to the verification service where the user can complete the\n\t * verification process. This URL is expected to be a web URL that the\n\t * user can visit to complete the verification.\n\t */\n\twebURL: string;\n} | {\n\tok: false;\n\terror: string;\n});\n\nexport type KeetaKYCAnchorGetCertificateResponse = ({\n\tok: true;\n\t/**\n\t * The certificates that were issued by the KYC Anchor service.\n\t * Typically this will just be a single certificate, but\n\t * it could also be multiple certificates if the service\n\t * issues multiple certificates for a single verification.\n\t *\n\t * Each certificate is represented as a PEM-encoded string.\n\t * The `intermediates` field is optional and may contain\n\t * additional intermediate certificates that are required to\n\t * validate the certificate chain.\n\t */\n\tresults: ({\n\t\tcertificate: string;\n\t\tintermediates?: string[];\n\t})[];\n} | {\n\tok: false;\n\terror: string;\n});\n\nclass KeetaKYCAnchorVerificationNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorVerificationNotFoundError';\n\tprivate readonly KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID = '79d7036f-58ad-4eec-b64c-26bdf98cd3c1';\n\toverride readonly logLevel = 'DEBUG';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Verification ID not found');\n\t\tthis.statusCode = 400;\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorVerificationNotFoundError.KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorVerificationNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID', KeetaKYCAnchorVerificationNotFoundError.KeetaKYCAnchorVerificationNotFoundErrorObjectTypeID));\n\t}\n}\n\nclass KeetaKYCAnchorCertificateNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorCertificateNotFoundError';\n\tprivate readonly KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID = '6f4d9620-df33-468e-ae03-898d4fa67aeb';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Certificate not found (pending)');\n\t\tthis.statusCode = 404;\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorCertificateNotFoundError.KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorCertificateNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID', KeetaKYCAnchorCertificateNotFoundError.KeetaKYCAnchorCertificateNotFoundErrorObjectTypeID));\n\t}\n}\n\nclass KeetaKYCAnchorCertificatePaymentRequired extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaKYCAnchorCertificatePaymentRequired';\n\tprivate readonly KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID!: string;\n\tprivate static readonly KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID = '92b2481d-b29b-4fa2-a295-3a47d99c0869';\n\treadonly amount: bigint;\n\treadonly token: KeetaNetToken;\n\n\tconstructor(cost: { amount: bigint | string; token: KeetaNetToken | string; }, message?: string) {\n\t\tsuper(message ?? 'Payment required for certificate');\n\t\tthis.statusCode = 402;\n\n\t\tthis.amount = BigInt(cost.amount);\n\t\tthis.token = KeetaNet.lib.Account.toAccount<typeof KeetaNet.lib.Account.AccountKeyAlgorithm.TOKEN>(cost.token);\n\n\t\tObject.defineProperty(this, 'KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID', {\n\t\t\tvalue: KeetaKYCAnchorCertificatePaymentRequired.KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaKYCAnchorCertificatePaymentRequired {\n\t\treturn(this.hasPropWithValue(input, 'KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID', KeetaKYCAnchorCertificatePaymentRequired.KeetaKYCAnchorCertificatePaymentRequiredObjectTypeID));\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\tlet message = this.message;\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\tok: false,\n\t\t\t\tcode: 'KEETA_ANCHOR_KYC_PAYMENT_REQUIRED',\n\t\t\t\tdata: {\n\t\t\t\t\tcost: {\n\t\t\t\t\t\tamount: `0x${this.amount.toString(16)}`,\n\t\t\t\t\t\ttoken: this.token.publicKeyString.get()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: this.message\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): { ok: false; retryable: boolean; error: string; name: string; statusCode: number; amount: string; token: string } {\n\t\treturn({\n\t\t\tok: false,\n\t\t\tretryable: this.retryable,\n\t\t\terror: this.message,\n\t\t\tname: this.name,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tamount: `0x${this.amount.toString(16)}`,\n\t\t\ttoken: this.token.publicKeyString.get()\n\t\t});\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaKYCAnchorCertificatePaymentRequired> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\n\t\t// Extract required properties specific to PaymentRequired\n\t\tif (!('amount' in other) || typeof other.amount !== 'string') {\n\t\t\tthrow(new Error('Invalid KeetaKYCAnchorCertificatePaymentRequired JSON object: missing or invalid amount'));\n\t\t}\n\n\t\tif (!('token' in other) || typeof other.token !== 'string') {\n\t\t\tthrow(new Error('Invalid KeetaKYCAnchorCertificatePaymentRequired JSON object: missing or invalid token'));\n\t\t}\n\n\t\tconst error = new this(\n\t\t\t{\n\t\t\t\tamount: other.amount,\n\t\t\t\ttoken: other.token\n\t\t\t},\n\t\t\tmessage\n\t\t);\n\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nexport const Errors: {\n\tVerificationNotFound: typeof KeetaKYCAnchorVerificationNotFoundError;\n\tCertificateNotFound: typeof KeetaKYCAnchorCertificateNotFoundError;\n\tPaymentRequired: typeof KeetaKYCAnchorCertificatePaymentRequired;\n} = {\n\t/**\n\t * The verification ID was not found\n\t */\n\tVerificationNotFound: KeetaKYCAnchorVerificationNotFoundError,\n\n\t/**\n\t * The certificate for the verification ID was not found\n\t * (typically this means the verification is still pending)\n\t */\n\tCertificateNotFound: KeetaKYCAnchorCertificateNotFoundError,\n\n\t/**\n\t * Payment is required for the certificate\n\t */\n\tPaymentRequired: KeetaKYCAnchorCertificatePaymentRequired\n}\n\nexport async function generateSignedData(account: Signing.SignableAccount): Promise<{ nonce: string; timestamp: string; signature: string; }> {\n\treturn(await Signing.SignData(account, []));\n}\n\nexport async function verifySignedData(request: Pick<KeetaKYCAnchorCreateVerificationRequest, 'account' | 'signed'>): Promise<boolean> {\n\tconst account = KeetaNet.lib.Account.fromPublicKeyString(request.account);\n\treturn(await Signing.VerifySignedData(account, [], request.signed));\n}\n"]}
@@ -23,7 +23,7 @@ type KeetaNotificationAnchorOperations = {
23
23
  };
24
24
  };
25
25
  };
26
- type KeetaNotificationServiceInfo = {
26
+ type KeetaNotificationServiceInfo = Omit<NonNullable<ServiceMetadata['services']['notification']>[string], 'operations'> & {
27
27
  operations: {
28
28
  [operation in keyof KeetaNotificationAnchorOperations]: Promise<KeetaNotificationAnchorOperations[operation]>;
29
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/notification/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/notification/client.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import Resolver from '../../lib/resolver.js';
5
5
  import { createAssertEquals } from 'typia';
6
6
  import { KeetaAnchorError } from '../../lib/error.js';
7
7
  import { SignData } from '../../lib/utils/signing.js';
8
- import { getNotificationRegisterTargetRequestSignable, getNotificationListTargetsRequestSignable, getNotificationDeleteTargetRequestSignable, getNotificationCreateSubscriptionRequestSignable, getNotificationListSubscriptionsRequestSignable, getNotificationDeleteSubscriptionRequestSignable, isKeetaNotificationAnchorRegisterTargetResponseJSON, isKeetaNotificationAnchorListTargetsResponseJSON, isKeetaNotificationAnchorDeleteTargetResponseJSON, isKeetaNotificationAnchorCreateSubscriptionResponseJSON, isKeetaNotificationAnchorListSubscriptionsResponseJSON, isKeetaNotificationAnchorDeleteSubscriptionResponseJSON, parseSubscriptionDetailsWithID } from './common.js';
8
+ import { getNotificationRegisterTargetRequestSignable, getNotificationListTargetsRequestSignable, getNotificationDeleteTargetRequestSignable, getNotificationCreateSubscriptionRequestSignable, getNotificationListSubscriptionsRequestSignable, getNotificationDeleteSubscriptionRequestSignable, isKeetaNotificationAnchorRegisterTargetResponseJSON, isKeetaNotificationAnchorListTargetsResponseJSON, isKeetaNotificationAnchorDeleteTargetResponseJSON, isKeetaNotificationAnchorCreateSubscriptionResponseJSON, isKeetaNotificationAnchorListSubscriptionsResponseJSON, isKeetaNotificationAnchorDeleteSubscriptionResponseJSON, parseSubscriptionDetailsWithID, assertNotificationSubscriptionType } from './common.js';
9
9
  import { addSignatureToURL } from '../../lib/http-server/common.js';
10
10
  const KeetaNotificationAnchorClientAccessToken = Symbol('KeetaNotificationAnchorClientAccessToken');
11
11
  const assertServiceMetadataEndpoint = (() => { const _io0 = (input, _exceptionable = true) => "string" === typeof input.url && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io1(input.options, true && _exceptionable)) && (1 === Object.keys(input).length || Object.keys(input).every(key => {
@@ -184,10 +184,73 @@ async function getEndpoints(resolver, criteria, shared, logger) {
184
184
  configurable: true
185
185
  });
186
186
  }
187
+ const supportedChannels = await (async () => {
188
+ if (!serviceInfo.supportedChannels) {
189
+ return (undefined);
190
+ }
191
+ const resolvedValue = await serviceInfo.supportedChannels('object');
192
+ const allChannelTypes = ['FCM'];
193
+ const retval = {};
194
+ for (const type of allChannelTypes) {
195
+ const typeCheck = await resolvedValue[type]?.('array');
196
+ if (!typeCheck) {
197
+ continue;
198
+ }
199
+ if (!retval[type]) {
200
+ retval[type] = [];
201
+ }
202
+ for (const item of typeCheck) {
203
+ const resolvedItem = await item('object');
204
+ if (type === 'FCM') {
205
+ const [projectId, messagingSenderId, appId, apiKey, vapidKey, bundleId] = await Promise.all([
206
+ resolvedItem.projectId('string'),
207
+ resolvedItem.messagingSenderId('string'),
208
+ resolvedItem.appId('string'),
209
+ resolvedItem.apiKey('string'),
210
+ resolvedItem.vapidKey?.('string'),
211
+ resolvedItem.bundleId?.('string')
212
+ ]);
213
+ if (!projectId || !messagingSenderId || !appId || !apiKey) {
214
+ logger?.debug('NotificationAnchor:getEndpoints', 'Invalid supported channel configuration, missing required fields', { type, item: resolvedItem });
215
+ continue;
216
+ }
217
+ retval[type].push({
218
+ projectId,
219
+ messagingSenderId,
220
+ appId,
221
+ apiKey,
222
+ ...(vapidKey ? { vapidKey } : {}),
223
+ ...(bundleId ? { bundleId } : {})
224
+ });
225
+ }
226
+ }
227
+ }
228
+ return (retval);
229
+ })();
230
+ const supportedSubscriptions = await (async () => {
231
+ if (!serviceInfo.supportedSubscriptions) {
232
+ return (undefined);
233
+ }
234
+ const resolvedValue = await serviceInfo.supportedSubscriptions('array');
235
+ const allValues = await Promise.allSettled(resolvedValue.map(async function (item) {
236
+ return (assertNotificationSubscriptionType(await item('string')));
237
+ }));
238
+ const retval = [];
239
+ for (const result of allValues) {
240
+ if (result.status === 'fulfilled') {
241
+ retval.push(result.value);
242
+ }
243
+ }
244
+ return (retval);
245
+ })();
187
246
  return ([
188
247
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
189
248
  id,
190
- { operations: operationsFunctions }
249
+ {
250
+ operations: operationsFunctions,
251
+ ...(supportedChannels ? { supportedChannels } : {}),
252
+ ...(supportedSubscriptions ? { supportedSubscriptions } : {})
253
+ }
191
254
  ]);
192
255
  });
193
256
  if (serviceInfoPromises.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/notification/client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport { getDefaultResolver } from '../../config.js';\nimport type {\n\tUserClient as KeetaNetUserClient\n} from '@keetanetwork/keetanet-client';\nimport type { Logger } from '../../lib/log/index.js';\nimport Resolver from '../../lib/resolver.js';\nimport type { ServiceMetadata, ServiceMetadataAuthenticationType, ServiceMetadataEndpoint, ServiceSearchCriteria, SharedLookupCriteria } from '../../lib/resolver.js';\nimport { createAssertEquals } from 'typia';\nimport type { BrandedString } from '../../lib/utils/brand.js';\nimport { KeetaAnchorError } from '../../lib/error.js';\nimport { SignData } from '../../lib/utils/signing.js';\nimport type {\n\tKeetaNotificationAnchorRegisterTargetClientRequest,\n\tKeetaNotificationAnchorListTargetsClientRequest,\n\tKeetaNotificationAnchorDeleteTargetClientRequest,\n\tKeetaNotificationAnchorCreateSubscriptionClientRequest,\n\tKeetaNotificationAnchorListSubscriptionsClientRequest,\n\tKeetaNotificationAnchorDeleteSubscriptionClientRequest,\n\tNotificationTargetWithIDResponse,\n\tSubscriptionDetails,\n\tNotificationChannelArguments\n} from './common.js';\nimport {\n\tgetNotificationRegisterTargetRequestSignable,\n\tgetNotificationListTargetsRequestSignable,\n\tgetNotificationDeleteTargetRequestSignable,\n\tgetNotificationCreateSubscriptionRequestSignable,\n\tgetNotificationListSubscriptionsRequestSignable,\n\tgetNotificationDeleteSubscriptionRequestSignable,\n\tisKeetaNotificationAnchorRegisterTargetResponseJSON,\n\tisKeetaNotificationAnchorListTargetsResponseJSON,\n\tisKeetaNotificationAnchorDeleteTargetResponseJSON,\n\tisKeetaNotificationAnchorCreateSubscriptionResponseJSON,\n\tisKeetaNotificationAnchorListSubscriptionsResponseJSON,\n\tisKeetaNotificationAnchorDeleteSubscriptionResponseJSON,\n\tparseSubscriptionDetailsWithID\n} from './common.js';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\nimport { addSignatureToURL } from '../../lib/http-server/common.js';\n\nexport type KeetaNotificationAnchorClientConfig = {\n\tid?: string;\n\tlogger?: Logger | undefined;\n\tresolver?: Resolver;\n\taccount?: InstanceType<typeof KeetaNetLib.Account>;\n} & Omit<NonNullable<Parameters<typeof getDefaultResolver>[1]>, 'client'>;\n\ntype ProviderID = BrandedString<'NotificationProviderID'>;\n\nconst KeetaNotificationAnchorClientAccessToken = Symbol('KeetaNotificationAnchorClientAccessToken');\n\nconst assertServiceMetadataEndpoint = createAssertEquals<ServiceMetadataEndpoint>();\n\ntype KeetaNotificationAnchorOperations = {\n\t[operation in keyof NonNullable<ServiceMetadata['services']['notification']>[string]['operations']]?: {\n\t\turl: (params?: { [key: string]: string; }) => URL;\n\t\toptions: {\n\t\t\tauthentication: ServiceMetadataAuthenticationType;\n\t\t};\n\t};\n};\n\ntype KeetaNotificationServiceInfo = {\n\toperations: {\n\t\t[operation in keyof KeetaNotificationAnchorOperations]: Promise<KeetaNotificationAnchorOperations[operation]>;\n\t};\n};\n\ntype GetEndpointsResult = {\n\t[id in ProviderID]: KeetaNotificationServiceInfo;\n};\n\nfunction validateURL(url: string | undefined): URL {\n\tif (!url) {\n\t\tthrow(new Error('Invalid URL: empty value'));\n\t}\n\n\treturn(new URL(url));\n}\n\nasync function getEndpoints(resolver: Resolver, criteria: ServiceSearchCriteria<'notification'>, shared?: SharedLookupCriteria, logger?: Logger): Promise<GetEndpointsResult | null> {\n\tconst response = await resolver.lookup('notification', criteria, shared);\n\tif (response === undefined) {\n\t\treturn(null);\n\t}\n\n\tconst serviceInfoPromises = Object.entries(response).map(async function([id, serviceInfo]): Promise<[ProviderID, KeetaNotificationServiceInfo]> {\n\t\tconst operations = await serviceInfo.operations('object');\n\t\tconst operationsFunctions: Partial<KeetaNotificationServiceInfo['operations']> = {};\n\t\tfor (const [key, operation] of Object.entries(operations)) {\n\t\t\tif (operation === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tObject.defineProperty(operationsFunctions, key, {\n\t\t\t\tget: async function() {\n\t\t\t\t\tconst endpoint = assertServiceMetadataEndpoint(await Resolver.Metadata.fullyResolveValuizable(operation));\n\n\t\t\t\t\tlet url: string;\n\t\t\t\t\tlet authentication: ServiceMetadataAuthenticationType = {\n\t\t\t\t\t\tmethod: 'keeta-account',\n\t\t\t\t\t\ttype: 'none'\n\t\t\t\t\t};\n\n\t\t\t\t\tif (typeof endpoint === 'string') {\n\t\t\t\t\t\turl = endpoint;\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = endpoint.url;\n\t\t\t\t\t\tif (endpoint.options?.authentication) {\n\t\t\t\t\t\t\tauthentication = endpoint.options.authentication;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn({\n\t\t\t\t\t\turl: function(params?: { [key: string]: string; }): URL {\n\t\t\t\t\t\t\tlet substitutedURL: string;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tsubstitutedURL = decodeURI(url);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tlogger?.debug('NotificationAnchor:getEndpoints', 'Failed to decode URI, using original URL for substitution', error, url);\n\t\t\t\t\t\t\t\tsubstitutedURL = url;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (const [paramKey, paramValue] of Object.entries(params ?? {})) {\n\t\t\t\t\t\t\t\tsubstitutedURL = substitutedURL.replace(`{${paramKey}}`, encodeURIComponent(paramValue));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn(validateURL(substitutedURL));\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: { authentication }\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t}\n\n\t\treturn([\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tid as unknown as ProviderID,\n\t\t\t{ operations: operationsFunctions }\n\t\t]);\n\t});\n\n\tif (serviceInfoPromises.length === 0) {\n\t\treturn(null);\n\t}\n\n\tconst entries = await Promise.all(serviceInfoPromises);\n\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\treturn(Object.fromEntries(entries) as GetEndpointsResult);\n}\n\ninterface KeetaNotificationAnchorBaseConfig {\n\tclient: KeetaNetUserClient;\n\tlogger?: Logger | undefined;\n\taccount?: InstanceType<typeof KeetaNetLib.Account> | undefined;\n}\n\nclass KeetaNotificationAnchorBase {\n\tprotected readonly client: KeetaNetUserClient;\n\tprotected readonly logger?: Logger | undefined;\n\tprotected readonly account?: InstanceType<typeof KeetaNetLib.Account> | undefined;\n\n\tconstructor(config: KeetaNotificationAnchorBaseConfig) {\n\t\tthis.client = config.client;\n\t\tthis.logger = config.logger;\n\t\tthis.account = config.account;\n\t}\n}\n\nclass KeetaNotificationAnchorProvider extends KeetaNotificationAnchorBase {\n\treadonly serviceInfo: KeetaNotificationServiceInfo;\n\treadonly providerID: ProviderID;\n\n\tconstructor(serviceInfo: KeetaNotificationServiceInfo, providerID: ProviderID, parent: KeetaNotificationAnchorClient) {\n\t\tconst parentInternals = parent._internals(KeetaNotificationAnchorClientAccessToken);\n\t\tsuper(parentInternals);\n\n\t\tthis.serviceInfo = serviceInfo;\n\t\tthis.providerID = providerID;\n\t}\n\n\tasync #getOperation<Name extends keyof KeetaNotificationAnchorOperations>(operationName: Name): Promise<NonNullable<KeetaNotificationAnchorOperations[Name]>> {\n\t\tconst operationGetter = this.serviceInfo.operations[operationName];\n\t\tif (operationGetter === undefined) {\n\t\t\tthrow(new Error(`Notification provider does not support ${operationName} operation`));\n\t\t}\n\n\t\tconst endpoint = await operationGetter;\n\t\tif (endpoint === undefined) {\n\t\t\tthrow(new Error(`Notification provider does not support ${operationName} operation`));\n\t\t}\n\n\t\tif (endpoint.options.authentication.method !== 'keeta-account') {\n\t\t\tthrow(new Error(`Unsupported authentication method: ${endpoint.options.authentication.method}`));\n\t\t}\n\n\t\treturn(endpoint);\n\t}\n\n\tasync #parseResponseError(data: unknown): Promise<Error> {\n\t\ttry {\n\t\t\treturn(await KeetaAnchorError.fromJSON(data));\n\t\t} catch (error) {\n\t\t\tthis.logger?.debug('NotificationAnchor', 'Failed to parse error response', error, data);\n\n\t\t\tif (typeof data === 'object' && data !== null && 'error' in data && typeof data.error === 'string') {\n\t\t\t\treturn(new Error(data.error));\n\t\t\t}\n\n\t\t\treturn(new Error('Notification provider request failed'));\n\t\t}\n\t}\n\n\t#resolveAccount(account?: InstanceType<typeof KeetaNetLib.Account>): InstanceType<typeof KeetaNetLib.Account> {\n\t\tconst accountToUse = account ?? this.account;\n\t\tif (!accountToUse) {\n\t\t\tthrow(new Error('Account is required for this operation'));\n\t\t}\n\n\t\treturn(accountToUse);\n\t}\n\n\tasync registerTarget(input: KeetaNotificationAnchorRegisterTargetClientRequest & { channel: NotificationChannelArguments }): Promise<{ id: string }> {\n\t\tconst endpoint = await this.#getOperation('registerTarget');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification registerTarget operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationRegisterTargetRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tchannel: input.channel,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification registerTarget response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorRegisterTargetResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider registerTarget endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ id: responseJSON.id });\n\t}\n\n\tasync listTargets(input?: KeetaNotificationAnchorListTargetsClientRequest): Promise<{ targets: NotificationTargetWithIDResponse[] }> {\n\t\tconst endpoint = await this.#getOperation('listTargets');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification listTargets operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input?.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationListTargetsRequestSignable());\n\n\t\tconst serviceURL = addSignatureToURL(endpoint.url(), { signedField: signed, account: accountToUse.assertAccount() });\n\n\t\tconst response = await fetch(serviceURL, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { 'Accept': 'application/json' }\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification listTargets response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorListTargetsResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider listTargets endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ targets: responseJSON.targets });\n\t}\n\n\tasync deleteTarget(input: KeetaNotificationAnchorDeleteTargetClientRequest): Promise<{ ok: boolean }> {\n\t\tconst endpoint = await this.#getOperation('deleteTarget');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification deleteTarget operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationDeleteTargetRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tid: input.id,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification deleteTarget response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorDeleteTargetResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider deleteTarget endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ ok: responseJSON.ok });\n\t}\n\n\tasync createSubscription(input: KeetaNotificationAnchorCreateSubscriptionClientRequest): Promise<{ id: string }> {\n\t\tconst endpoint = await this.#getOperation('createSubscription');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification createSubscription operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationCreateSubscriptionRequestSignable(input));\n\n\t\tconst serializedSubscription = {\n\t\t\t...input.subscription,\n\t\t\t...(input.subscription.locale ? { locale: input.subscription.locale.toString() } : {}),\n\t\t\t...(input.subscription.toAddress ? { toAddress: input.subscription.toAddress.publicKeyString.get() } : {})\n\t\t};\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tsubscription: serializedSubscription,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification createSubscription response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorCreateSubscriptionResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider createSubscription endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ id: responseJSON.id });\n\t}\n\n\tasync listSubscriptions(input?: KeetaNotificationAnchorListSubscriptionsClientRequest): Promise<{ subscriptions: SubscriptionDetails[] }> {\n\t\tconst endpoint = await this.#getOperation('listSubscriptions');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification listSubscriptions operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input?.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationListSubscriptionsRequestSignable());\n\n\t\tconst serviceURL = addSignatureToURL(endpoint.url(), { signedField: signed, account: accountToUse.assertAccount() });\n\n\t\tconst response = await fetch(serviceURL, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { 'Accept': 'application/json' }\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification listSubscriptions response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorListSubscriptionsResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider listSubscriptions endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({\n\t\t\tsubscriptions: responseJSON.subscriptions.map(function(row) {\n\t\t\t\treturn(parseSubscriptionDetailsWithID(row));\n\t\t\t})\n\t\t});\n\t}\n\n\tasync deleteSubscription(input: KeetaNotificationAnchorDeleteSubscriptionClientRequest): Promise<{ ok: boolean }> {\n\t\tconst endpoint = await this.#getOperation('deleteSubscription');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification deleteSubscription operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationDeleteSubscriptionRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tid: input.id,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification deleteSubscription response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorDeleteSubscriptionResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider deleteSubscription endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ ok: responseJSON.ok });\n\t}\n}\n\nclass KeetaNotificationAnchorClient extends KeetaNotificationAnchorBase {\n\treadonly resolver: Resolver;\n\treadonly id: string;\n\n\tconstructor(client: KeetaNetUserClient, config: KeetaNotificationAnchorClientConfig = {}) {\n\t\tsuper({ client, logger: config.logger, account: config.account });\n\t\tthis.resolver = config.resolver ?? getDefaultResolver(client, config);\n\t\tthis.id = config.id ?? crypto.randomUUID();\n\t}\n\n\tasync #lookup(criteria: ServiceSearchCriteria<'notification'> = {}, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider[] | null> {\n\t\tconst endpoints = await getEndpoints(this.resolver, criteria, shared, this.logger);\n\t\tif (endpoints === null) {\n\t\t\treturn(null);\n\t\t}\n\n\t\tconst providers = Object.entries(endpoints).map(([providerID, serviceInfo]) => {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\treturn(new KeetaNotificationAnchorProvider(serviceInfo as KeetaNotificationServiceInfo, providerID as unknown as ProviderID, this));\n\t\t});\n\n\t\tif (providers.length === 0) {\n\t\t\treturn(null);\n\t\t}\n\n\t\treturn(providers);\n\t}\n\n\tasync getProviders(criteria?: ServiceSearchCriteria<'notification'>, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider[] | null> {\n\t\treturn(await this.#lookup(criteria, shared));\n\t}\n\n\tasync getProvider(providerID: string, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider | null> {\n\t\tconst mergedSharedCriteria: SharedLookupCriteria = {\n\t\t\t...shared,\n\t\t\tproviderIDs: shared?.providerIDs !== undefined ? Array.from(new Set([...shared.providerIDs, providerID])) : [providerID]\n\t\t};\n\t\tconst providers = await this.#lookup({}, mergedSharedCriteria);\n\t\treturn(providers?.[0] ?? null);\n\t}\n\n\t/** @internal */\n\t_internals(accessToken: symbol) {\n\t\tif (accessToken !== KeetaNotificationAnchorClientAccessToken) {\n\t\t\tthrow(new Error('invalid access token'));\n\t\t}\n\n\t\treturn({\n\t\t\tclient: this.client,\n\t\t\tlogger: this.logger,\n\t\t\taccount: this.account\n\t\t});\n\t}\n}\n\nexport default KeetaNotificationAnchorClient;\nexport { KeetaNotificationAnchorProvider };\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/notification/client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport { getDefaultResolver } from '../../config.js';\nimport type {\n\tUserClient as KeetaNetUserClient\n} from '@keetanetwork/keetanet-client';\nimport type { Logger } from '../../lib/log/index.js';\nimport Resolver from '../../lib/resolver.js';\nimport type { ServiceMetadata, ServiceMetadataAuthenticationType, ServiceMetadataEndpoint, ServiceSearchCriteria, SharedLookupCriteria } from '../../lib/resolver.js';\nimport { createAssertEquals } from 'typia';\nimport type { BrandedString } from '../../lib/utils/brand.js';\nimport { KeetaAnchorError } from '../../lib/error.js';\nimport { SignData } from '../../lib/utils/signing.js';\nimport type {\n\tKeetaNotificationAnchorRegisterTargetClientRequest,\n\tKeetaNotificationAnchorListTargetsClientRequest,\n\tKeetaNotificationAnchorDeleteTargetClientRequest,\n\tKeetaNotificationAnchorCreateSubscriptionClientRequest,\n\tKeetaNotificationAnchorListSubscriptionsClientRequest,\n\tKeetaNotificationAnchorDeleteSubscriptionClientRequest,\n\tNotificationTargetWithIDResponse,\n\tSubscriptionDetails,\n\tNotificationChannelArguments,\n\tNotificationChannelType,\n\tSupportedChannelConfigurationMetadata,\n\tNotificationSubscriptionType\n} from './common.js';\nimport {\n\tgetNotificationRegisterTargetRequestSignable,\n\tgetNotificationListTargetsRequestSignable,\n\tgetNotificationDeleteTargetRequestSignable,\n\tgetNotificationCreateSubscriptionRequestSignable,\n\tgetNotificationListSubscriptionsRequestSignable,\n\tgetNotificationDeleteSubscriptionRequestSignable,\n\tisKeetaNotificationAnchorRegisterTargetResponseJSON,\n\tisKeetaNotificationAnchorListTargetsResponseJSON,\n\tisKeetaNotificationAnchorDeleteTargetResponseJSON,\n\tisKeetaNotificationAnchorCreateSubscriptionResponseJSON,\n\tisKeetaNotificationAnchorListSubscriptionsResponseJSON,\n\tisKeetaNotificationAnchorDeleteSubscriptionResponseJSON,\n\tparseSubscriptionDetailsWithID,\n\tassertNotificationSubscriptionType\n} from './common.js';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\nimport { addSignatureToURL } from '../../lib/http-server/common.js';\nimport type { AssertNever } from '../../lib/utils/never.js';\n\nexport type KeetaNotificationAnchorClientConfig = {\n\tid?: string;\n\tlogger?: Logger | undefined;\n\tresolver?: Resolver;\n\taccount?: InstanceType<typeof KeetaNetLib.Account>;\n} & Omit<NonNullable<Parameters<typeof getDefaultResolver>[1]>, 'client'>;\n\ntype ProviderID = BrandedString<'NotificationProviderID'>;\n\nconst KeetaNotificationAnchorClientAccessToken = Symbol('KeetaNotificationAnchorClientAccessToken');\n\nconst assertServiceMetadataEndpoint = createAssertEquals<ServiceMetadataEndpoint>();\n\ntype KeetaNotificationAnchorOperations = {\n\t[operation in keyof NonNullable<ServiceMetadata['services']['notification']>[string]['operations']]?: {\n\t\turl: (params?: { [key: string]: string; }) => URL;\n\t\toptions: {\n\t\t\tauthentication: ServiceMetadataAuthenticationType;\n\t\t};\n\t};\n};\n\ntype KeetaNotificationServiceInfo = Omit<NonNullable<ServiceMetadata['services']['notification']>[string], 'operations'> & {\n\toperations: {\n\t\t[operation in keyof KeetaNotificationAnchorOperations]: Promise<KeetaNotificationAnchorOperations[operation]>;\n\t};\n};\n\ntype GetEndpointsResult = {\n\t[id in ProviderID]: KeetaNotificationServiceInfo;\n};\n\nfunction validateURL(url: string | undefined): URL {\n\tif (!url) {\n\t\tthrow(new Error('Invalid URL: empty value'));\n\t}\n\n\treturn(new URL(url));\n}\n\nasync function getEndpoints(resolver: Resolver, criteria: ServiceSearchCriteria<'notification'>, shared?: SharedLookupCriteria, logger?: Logger): Promise<GetEndpointsResult | null> {\n\tconst response = await resolver.lookup('notification', criteria, shared);\n\tif (response === undefined) {\n\t\treturn(null);\n\t}\n\n\tconst serviceInfoPromises = Object.entries(response).map(async function([id, serviceInfo]): Promise<[ProviderID, KeetaNotificationServiceInfo]> {\n\t\tconst operations = await serviceInfo.operations('object');\n\t\tconst operationsFunctions: Partial<KeetaNotificationServiceInfo['operations']> = {};\n\t\tfor (const [key, operation] of Object.entries(operations)) {\n\t\t\tif (operation === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tObject.defineProperty(operationsFunctions, key, {\n\t\t\t\tget: async function() {\n\t\t\t\t\tconst endpoint = assertServiceMetadataEndpoint(await Resolver.Metadata.fullyResolveValuizable(operation));\n\n\t\t\t\t\tlet url: string;\n\t\t\t\t\tlet authentication: ServiceMetadataAuthenticationType = {\n\t\t\t\t\t\tmethod: 'keeta-account',\n\t\t\t\t\t\ttype: 'none'\n\t\t\t\t\t};\n\n\t\t\t\t\tif (typeof endpoint === 'string') {\n\t\t\t\t\t\turl = endpoint;\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = endpoint.url;\n\t\t\t\t\t\tif (endpoint.options?.authentication) {\n\t\t\t\t\t\t\tauthentication = endpoint.options.authentication;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn({\n\t\t\t\t\t\turl: function(params?: { [key: string]: string; }): URL {\n\t\t\t\t\t\t\tlet substitutedURL: string;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tsubstitutedURL = decodeURI(url);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tlogger?.debug('NotificationAnchor:getEndpoints', 'Failed to decode URI, using original URL for substitution', error, url);\n\t\t\t\t\t\t\t\tsubstitutedURL = url;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (const [paramKey, paramValue] of Object.entries(params ?? {})) {\n\t\t\t\t\t\t\t\tsubstitutedURL = substitutedURL.replace(`{${paramKey}}`, encodeURIComponent(paramValue));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn(validateURL(substitutedURL));\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: { authentication }\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t}\n\n\t\tconst supportedChannels = await (async () => {\n\t\t\tif (!serviceInfo.supportedChannels) {\n\t\t\t\treturn(undefined);\n\t\t\t}\n\n\t\t\tconst resolvedValue = await serviceInfo.supportedChannels('object');\n\n\t\t\tconst allChannelTypes = ['FCM'] as const;\n\t\t\t// Check that NotificationChannelType is fully covered by allChannelTypes\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\ttype __checkAllChannelTypes = AssertNever<NotificationChannelType extends typeof allChannelTypes[number] ? never : true>;\n\n\t\t\tconst retval: Partial<SupportedChannelConfigurationMetadata> = {};\n\n\t\t\tfor (const type of allChannelTypes) {\n\t\t\t\tconst typeCheck = await resolvedValue[type]?.('array');\n\n\t\t\t\tif (!typeCheck) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!retval[type]) {\n\t\t\t\t\tretval[type] = [];\n\t\t\t\t}\n\n\t\t\t\tfor (const item of typeCheck) {\n\t\t\t\t\tconst resolvedItem = await item('object');\n\t\t\t\t\tif (type === 'FCM') {\n\t\t\t\t\t\tconst [ projectId, messagingSenderId, appId, apiKey, vapidKey, bundleId ] = await Promise.all([\n\t\t\t\t\t\t\tresolvedItem.projectId('string'),\n\t\t\t\t\t\t\tresolvedItem.messagingSenderId('string'),\n\t\t\t\t\t\t\tresolvedItem.appId('string'),\n\t\t\t\t\t\t\tresolvedItem.apiKey('string'),\n\t\t\t\t\t\t\tresolvedItem.vapidKey?.('string'),\n\t\t\t\t\t\t\tresolvedItem.bundleId?.('string')\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\tif (!projectId || !messagingSenderId || !appId || !apiKey) {\n\t\t\t\t\t\t\tlogger?.debug('NotificationAnchor:getEndpoints', 'Invalid supported channel configuration, missing required fields', { type, item: resolvedItem });\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tretval[type].push({\n\t\t\t\t\t\t\tprojectId,\n\t\t\t\t\t\t\tmessagingSenderId,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tapiKey,\n\t\t\t\t\t\t\t...(vapidKey ? { vapidKey } : {}),\n\t\t\t\t\t\t\t...(bundleId ? { bundleId } : {})\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn(retval);\n\t\t})();\n\n\t\tconst supportedSubscriptions = await (async (): Promise<NotificationSubscriptionType[] | undefined> => {\n\t\t\tif (!serviceInfo.supportedSubscriptions) {\n\t\t\t\treturn(undefined);\n\t\t\t}\n\n\t\t\tconst resolvedValue = await serviceInfo.supportedSubscriptions('array');\n\n\t\t\tconst allValues = await Promise.allSettled(resolvedValue.map(async function(item) {\n\t\t\t\treturn(assertNotificationSubscriptionType(await item('string')))\n\t\t\t}));\n\n\t\t\tconst retval: NotificationSubscriptionType[] = [];\n\n\t\t\tfor (const result of allValues) {\n\t\t\t\tif (result.status === 'fulfilled') {\n\t\t\t\t\tretval.push(result.value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn(retval);\n\t\t})();\n\n\t\treturn([\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tid as unknown as ProviderID,\n\t\t\t{\n\t\t\t\toperations: operationsFunctions,\n\t\t\t\t...(supportedChannels ? { supportedChannels } : {}),\n\t\t\t\t...(supportedSubscriptions ? { supportedSubscriptions } : {})\n\t\t\t}\n\t\t]);\n\t});\n\n\tif (serviceInfoPromises.length === 0) {\n\t\treturn(null);\n\t}\n\n\tconst entries = await Promise.all(serviceInfoPromises);\n\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\treturn(Object.fromEntries(entries) as GetEndpointsResult);\n}\n\ninterface KeetaNotificationAnchorBaseConfig {\n\tclient: KeetaNetUserClient;\n\tlogger?: Logger | undefined;\n\taccount?: InstanceType<typeof KeetaNetLib.Account> | undefined;\n}\n\nclass KeetaNotificationAnchorBase {\n\tprotected readonly client: KeetaNetUserClient;\n\tprotected readonly logger?: Logger | undefined;\n\tprotected readonly account?: InstanceType<typeof KeetaNetLib.Account> | undefined;\n\n\tconstructor(config: KeetaNotificationAnchorBaseConfig) {\n\t\tthis.client = config.client;\n\t\tthis.logger = config.logger;\n\t\tthis.account = config.account;\n\t}\n}\n\nclass KeetaNotificationAnchorProvider extends KeetaNotificationAnchorBase {\n\treadonly serviceInfo: KeetaNotificationServiceInfo;\n\treadonly providerID: ProviderID;\n\n\tconstructor(serviceInfo: KeetaNotificationServiceInfo, providerID: ProviderID, parent: KeetaNotificationAnchorClient) {\n\t\tconst parentInternals = parent._internals(KeetaNotificationAnchorClientAccessToken);\n\t\tsuper(parentInternals);\n\n\t\tthis.serviceInfo = serviceInfo;\n\t\tthis.providerID = providerID;\n\t}\n\n\tasync #getOperation<Name extends keyof KeetaNotificationAnchorOperations>(operationName: Name): Promise<NonNullable<KeetaNotificationAnchorOperations[Name]>> {\n\t\tconst operationGetter = this.serviceInfo.operations[operationName];\n\t\tif (operationGetter === undefined) {\n\t\t\tthrow(new Error(`Notification provider does not support ${operationName} operation`));\n\t\t}\n\n\t\tconst endpoint = await operationGetter;\n\t\tif (endpoint === undefined) {\n\t\t\tthrow(new Error(`Notification provider does not support ${operationName} operation`));\n\t\t}\n\n\t\tif (endpoint.options.authentication.method !== 'keeta-account') {\n\t\t\tthrow(new Error(`Unsupported authentication method: ${endpoint.options.authentication.method}`));\n\t\t}\n\n\t\treturn(endpoint);\n\t}\n\n\tasync #parseResponseError(data: unknown): Promise<Error> {\n\t\ttry {\n\t\t\treturn(await KeetaAnchorError.fromJSON(data));\n\t\t} catch (error) {\n\t\t\tthis.logger?.debug('NotificationAnchor', 'Failed to parse error response', error, data);\n\n\t\t\tif (typeof data === 'object' && data !== null && 'error' in data && typeof data.error === 'string') {\n\t\t\t\treturn(new Error(data.error));\n\t\t\t}\n\n\t\t\treturn(new Error('Notification provider request failed'));\n\t\t}\n\t}\n\n\t#resolveAccount(account?: InstanceType<typeof KeetaNetLib.Account>): InstanceType<typeof KeetaNetLib.Account> {\n\t\tconst accountToUse = account ?? this.account;\n\t\tif (!accountToUse) {\n\t\t\tthrow(new Error('Account is required for this operation'));\n\t\t}\n\n\t\treturn(accountToUse);\n\t}\n\n\tasync registerTarget(input: KeetaNotificationAnchorRegisterTargetClientRequest & { channel: NotificationChannelArguments }): Promise<{ id: string }> {\n\t\tconst endpoint = await this.#getOperation('registerTarget');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification registerTarget operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationRegisterTargetRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tchannel: input.channel,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification registerTarget response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorRegisterTargetResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider registerTarget endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ id: responseJSON.id });\n\t}\n\n\tasync listTargets(input?: KeetaNotificationAnchorListTargetsClientRequest): Promise<{ targets: NotificationTargetWithIDResponse[] }> {\n\t\tconst endpoint = await this.#getOperation('listTargets');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification listTargets operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input?.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationListTargetsRequestSignable());\n\n\t\tconst serviceURL = addSignatureToURL(endpoint.url(), { signedField: signed, account: accountToUse.assertAccount() });\n\n\t\tconst response = await fetch(serviceURL, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { 'Accept': 'application/json' }\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification listTargets response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorListTargetsResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider listTargets endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ targets: responseJSON.targets });\n\t}\n\n\tasync deleteTarget(input: KeetaNotificationAnchorDeleteTargetClientRequest): Promise<{ ok: boolean }> {\n\t\tconst endpoint = await this.#getOperation('deleteTarget');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification deleteTarget operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationDeleteTargetRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tid: input.id,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification deleteTarget response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorDeleteTargetResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider deleteTarget endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ ok: responseJSON.ok });\n\t}\n\n\tasync createSubscription(input: KeetaNotificationAnchorCreateSubscriptionClientRequest): Promise<{ id: string }> {\n\t\tconst endpoint = await this.#getOperation('createSubscription');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification createSubscription operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationCreateSubscriptionRequestSignable(input));\n\n\t\tconst serializedSubscription = {\n\t\t\t...input.subscription,\n\t\t\t...(input.subscription.locale ? { locale: input.subscription.locale.toString() } : {}),\n\t\t\t...(input.subscription.toAddress ? { toAddress: input.subscription.toAddress.publicKeyString.get() } : {})\n\t\t};\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tsubscription: serializedSubscription,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification createSubscription response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorCreateSubscriptionResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider createSubscription endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ id: responseJSON.id });\n\t}\n\n\tasync listSubscriptions(input?: KeetaNotificationAnchorListSubscriptionsClientRequest): Promise<{ subscriptions: SubscriptionDetails[] }> {\n\t\tconst endpoint = await this.#getOperation('listSubscriptions');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification listSubscriptions operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input?.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationListSubscriptionsRequestSignable());\n\n\t\tconst serviceURL = addSignatureToURL(endpoint.url(), { signedField: signed, account: accountToUse.assertAccount() });\n\n\t\tconst response = await fetch(serviceURL, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { 'Accept': 'application/json' }\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification listSubscriptions response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorListSubscriptionsResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider listSubscriptions endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({\n\t\t\tsubscriptions: responseJSON.subscriptions.map(function(row) {\n\t\t\t\treturn(parseSubscriptionDetailsWithID(row));\n\t\t\t})\n\t\t});\n\t}\n\n\tasync deleteSubscription(input: KeetaNotificationAnchorDeleteSubscriptionClientRequest): Promise<{ ok: boolean }> {\n\t\tconst endpoint = await this.#getOperation('deleteSubscription');\n\n\t\tif (endpoint.options.authentication.type === 'none') {\n\t\t\tthrow(new Error('Notification deleteSubscription operation must require account authentication'));\n\t\t}\n\n\t\tconst accountToUse = this.#resolveAccount(input.account);\n\t\tconst signed: HTTPSignedField = await SignData(accountToUse.assertAccount(), getNotificationDeleteSubscriptionRequestSignable(input));\n\n\t\tconst response = await fetch(endpoint.url(), {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Accept': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\taccount: accountToUse.publicKeyString.get(),\n\t\t\t\tid: input.id,\n\t\t\t\tsigned\n\t\t\t})\n\t\t});\n\n\t\tlet responseJSON: unknown;\n\t\ttry {\n\t\t\tresponseJSON = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow(new Error(`Failed to parse notification deleteSubscription response as JSON: ${error}`));\n\t\t}\n\n\t\tif (!isKeetaNotificationAnchorDeleteSubscriptionResponseJSON(responseJSON)) {\n\t\t\tthrow(new Error('Invalid response from notification provider deleteSubscription endpoint'));\n\t\t}\n\n\t\tif (!responseJSON.ok) {\n\t\t\tthrow(await this.#parseResponseError(responseJSON));\n\t\t}\n\n\t\treturn({ ok: responseJSON.ok });\n\t}\n}\n\nclass KeetaNotificationAnchorClient extends KeetaNotificationAnchorBase {\n\treadonly resolver: Resolver;\n\treadonly id: string;\n\n\tconstructor(client: KeetaNetUserClient, config: KeetaNotificationAnchorClientConfig = {}) {\n\t\tsuper({ client, logger: config.logger, account: config.account });\n\t\tthis.resolver = config.resolver ?? getDefaultResolver(client, config);\n\t\tthis.id = config.id ?? crypto.randomUUID();\n\t}\n\n\tasync #lookup(criteria: ServiceSearchCriteria<'notification'> = {}, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider[] | null> {\n\t\tconst endpoints = await getEndpoints(this.resolver, criteria, shared, this.logger);\n\t\tif (endpoints === null) {\n\t\t\treturn(null);\n\t\t}\n\n\t\tconst providers = Object.entries(endpoints).map(([providerID, serviceInfo]) => {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\treturn(new KeetaNotificationAnchorProvider(serviceInfo as KeetaNotificationServiceInfo, providerID as unknown as ProviderID, this));\n\t\t});\n\n\t\tif (providers.length === 0) {\n\t\t\treturn(null);\n\t\t}\n\n\t\treturn(providers);\n\t}\n\n\tasync getProviders(criteria?: ServiceSearchCriteria<'notification'>, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider[] | null> {\n\t\treturn(await this.#lookup(criteria, shared));\n\t}\n\n\tasync getProvider(providerID: string, shared?: SharedLookupCriteria): Promise<KeetaNotificationAnchorProvider | null> {\n\t\tconst mergedSharedCriteria: SharedLookupCriteria = {\n\t\t\t...shared,\n\t\t\tproviderIDs: shared?.providerIDs !== undefined ? Array.from(new Set([...shared.providerIDs, providerID])) : [providerID]\n\t\t};\n\t\tconst providers = await this.#lookup({}, mergedSharedCriteria);\n\t\treturn(providers?.[0] ?? null);\n\t}\n\n\t/** @internal */\n\t_internals(accessToken: symbol) {\n\t\tif (accessToken !== KeetaNotificationAnchorClientAccessToken) {\n\t\t\tthrow(new Error('invalid access token'));\n\t\t}\n\n\t\treturn({\n\t\t\tclient: this.client,\n\t\t\tlogger: this.logger,\n\t\t\taccount: this.account\n\t\t});\n\t}\n}\n\nexport default KeetaNotificationAnchorClient;\nexport { KeetaNotificationAnchorProvider };\n"]}