@keetanetwork/anchor 0.0.21 → 0.0.23

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 (67) hide show
  1. package/config.d.ts +1 -1
  2. package/config.d.ts.map +1 -1
  3. package/config.js +1 -1
  4. package/config.js.map +1 -1
  5. package/lib/certificates.d.ts +4 -1
  6. package/lib/certificates.d.ts.map +1 -1
  7. package/lib/certificates.js +148 -14
  8. package/lib/certificates.js.map +1 -1
  9. package/lib/error.d.ts +35 -0
  10. package/lib/error.d.ts.map +1 -1
  11. package/lib/error.js +203 -7
  12. package/lib/error.js.map +1 -1
  13. package/lib/http-server/common.d.ts +6 -0
  14. package/lib/http-server/common.d.ts.map +1 -0
  15. package/lib/http-server/common.js +2 -0
  16. package/lib/http-server/common.js.map +1 -0
  17. package/lib/{http-server.d.ts → http-server/index.d.ts} +30 -12
  18. package/lib/http-server/index.d.ts.map +1 -0
  19. package/lib/{http-server.js → http-server/index.js} +107 -46
  20. package/lib/http-server/index.js.map +1 -0
  21. package/lib/resolver.d.ts +5 -2
  22. package/lib/resolver.d.ts.map +1 -1
  23. package/lib/resolver.js +15 -2
  24. package/lib/resolver.js.map +1 -1
  25. package/lib/utils/asn1.d.ts +0 -13
  26. package/lib/utils/asn1.d.ts.map +1 -1
  27. package/lib/utils/asn1.js +0 -1498
  28. package/lib/utils/asn1.js.map +1 -1
  29. package/lib/utils/external.d.ts.map +1 -1
  30. package/lib/utils/external.js +9 -2
  31. package/lib/utils/external.js.map +1 -1
  32. package/npm-shrinkwrap.json +5 -5
  33. package/package.json +2 -2
  34. package/services/asset-movement/client.d.ts +1 -0
  35. package/services/asset-movement/client.d.ts.map +1 -1
  36. package/services/asset-movement/client.js +13 -9
  37. package/services/asset-movement/client.js.map +1 -1
  38. package/services/asset-movement/common.d.ts +1 -1
  39. package/services/asset-movement/common.d.ts.map +1 -1
  40. package/services/asset-movement/common.js.map +1 -1
  41. package/services/asset-movement/server.d.ts +1 -1
  42. package/services/asset-movement/server.d.ts.map +1 -1
  43. package/services/asset-movement/server.js +1 -1
  44. package/services/asset-movement/server.js.map +1 -1
  45. package/services/fx/common.d.ts +15 -5
  46. package/services/fx/common.d.ts.map +1 -1
  47. package/services/fx/common.js +29 -0
  48. package/services/fx/common.js.map +1 -1
  49. package/services/fx/server.d.ts +12 -2
  50. package/services/fx/server.d.ts.map +1 -1
  51. package/services/fx/server.js +9 -2
  52. package/services/fx/server.js.map +1 -1
  53. package/services/kyc/common.d.ts +3 -5
  54. package/services/kyc/common.d.ts.map +1 -1
  55. package/services/kyc/common.generated.js +2 -2
  56. package/services/kyc/common.js +1 -0
  57. package/services/kyc/common.js.map +1 -1
  58. package/services/kyc/iso20022.generated.js +54 -54
  59. package/services/kyc/iso20022.generated.js.map +1 -1
  60. package/services/kyc/server.d.ts +1 -1
  61. package/services/kyc/server.d.ts.map +1 -1
  62. package/services/kyc/server.js +1 -1
  63. package/services/kyc/server.js.map +1 -1
  64. package/services/kyc/utils/generate-kyc-schema.js +34 -6
  65. package/services/kyc/utils/generate-kyc-schema.js.map +1 -1
  66. package/lib/http-server.d.ts.map +0 -1
  67. package/lib/http-server.js.map +0 -1
@@ -32,8 +32,8 @@ export const GenericOrganizationIdentificationSchema = {
32
32
  type: 'struct',
33
33
  fieldNames: ['id', 'issuer', 'schemeName'],
34
34
  contains: {
35
- id: { type: 'string', kind: 'utf8' },
36
- issuer: { optional: { type: 'string', kind: 'utf8' } },
35
+ id: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
36
+ issuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
37
37
  schemeName: { optional: OrganizationIdentificationSchemeNameChoiceSchema }
38
38
  }
39
39
  };
@@ -42,8 +42,8 @@ export const GenericPersonIdentificationSchema = {
42
42
  type: 'struct',
43
43
  fieldNames: ['id', 'issuer', 'schemeName'],
44
44
  contains: {
45
- id: { type: 'string', kind: 'utf8' },
46
- issuer: { optional: { type: 'string', kind: 'utf8' } },
45
+ id: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
46
+ issuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
47
47
  schemeName: { optional: PersonIdentificationSchemeNameChoiceSchema }
48
48
  }
49
49
  };
@@ -52,8 +52,8 @@ export const OtherContactSchema = {
52
52
  type: 'struct',
53
53
  fieldNames: ['channelType', 'id'],
54
54
  contains: {
55
- channelType: { type: 'string', kind: 'utf8' },
56
- id: { optional: { type: 'string', kind: 'utf8' } }
55
+ channelType: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
56
+ id: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } }
57
57
  }
58
58
  };
59
59
  // Generated ASN.1 schemas for ISO 20022 sequence-of-choice types
@@ -115,16 +115,16 @@ export const AddressSchema = {
115
115
  type: 'struct',
116
116
  fieldNames: ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'],
117
117
  contains: {
118
- addressLines: { optional: { sequenceOf: { type: 'string', kind: 'utf8' } } },
118
+ addressLines: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: { type: 'string', kind: 'utf8' } } } },
119
119
  addressType: { optional: AddressTypeSchema },
120
- buildingNumber: { optional: { type: 'string', kind: 'utf8' } },
121
- country: { optional: { type: 'string', kind: 'utf8' } },
122
- countrySubDivision: { optional: { type: 'string', kind: 'utf8' } },
123
- department: { optional: { type: 'string', kind: 'utf8' } },
124
- postalCode: { optional: { type: 'string', kind: 'utf8' } },
125
- streetName: { optional: { type: 'string', kind: 'utf8' } },
126
- subDepartment: { optional: { type: 'string', kind: 'utf8' } },
127
- townName: { optional: { type: 'string', kind: 'utf8' } }
120
+ buildingNumber: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },
121
+ country: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },
122
+ countrySubDivision: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
123
+ department: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
124
+ postalCode: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
125
+ streetName: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },
126
+ subDepartment: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
127
+ townName: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { type: 'string', kind: 'utf8' } } }
128
128
  }
129
129
  };
130
130
  export const DateAndPlaceOfBirthFields = ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'];
@@ -132,10 +132,10 @@ export const DateAndPlaceOfBirthSchema = {
132
132
  type: 'struct',
133
133
  fieldNames: ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'],
134
134
  contains: {
135
- birthDate: ASN1.ValidateASN1.IsDate,
136
- cityOfBirth: { type: 'string', kind: 'utf8' },
137
- countryOfBirth: { type: 'string', kind: 'utf8' },
138
- provinceOfBirth: { optional: { type: 'string', kind: 'utf8' } }
135
+ birthDate: { type: 'context', kind: 'explicit', value: 0, contains: ASN1.ValidateASN1.IsDate },
136
+ cityOfBirth: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },
137
+ countryOfBirth: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } },
138
+ provinceOfBirth: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } }
139
139
  }
140
140
  };
141
141
  export const EntityTypeFields = ['organization', 'person'];
@@ -143,8 +143,8 @@ export const EntityTypeSchema = {
143
143
  type: 'struct',
144
144
  fieldNames: ['organization', 'person'],
145
145
  contains: {
146
- organization: { optional: { sequenceOf: GenericOrganizationIdentificationSchema } },
147
- person: { optional: { sequenceOf: GenericPersonIdentificationSchema } }
146
+ organization: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: GenericOrganizationIdentificationSchema } } },
147
+ person: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { sequenceOf: GenericPersonIdentificationSchema } } }
148
148
  }
149
149
  };
150
150
  export const ContactDetailsFields = ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'];
@@ -152,18 +152,18 @@ export const ContactDetailsSchema = {
152
152
  type: 'struct',
153
153
  fieldNames: ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'],
154
154
  contains: {
155
- department: { optional: { type: 'string', kind: 'utf8' } },
156
- emailAddress: { optional: { type: 'string', kind: 'utf8' } },
157
- emailPurpose: { optional: { type: 'string', kind: 'utf8' } },
158
- faxNumber: { optional: { type: 'string', kind: 'utf8' } },
159
- fullName: { optional: { type: 'string', kind: 'utf8' } },
160
- jobResponsibility: { optional: { type: 'string', kind: 'utf8' } },
161
- jobTitle: { optional: { type: 'string', kind: 'utf8' } },
162
- mobileNumber: { optional: { type: 'string', kind: 'utf8' } },
163
- namePrefix: { optional: { type: 'string', kind: 'utf8' } },
164
- other: { optional: { sequenceOf: OtherContactSchema } },
165
- phoneNumber: { optional: { type: 'string', kind: 'utf8' } },
166
- preferredMethod: { optional: { type: 'string', kind: 'utf8' } }
155
+ department: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } } },
156
+ emailAddress: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
157
+ emailPurpose: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },
158
+ faxNumber: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },
159
+ fullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
160
+ jobResponsibility: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
161
+ jobTitle: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
162
+ mobileNumber: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },
163
+ namePrefix: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
164
+ other: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { sequenceOf: OtherContactSchema } } },
165
+ phoneNumber: { optional: { type: 'context', kind: 'explicit', value: 10, contains: { type: 'string', kind: 'utf8' } } },
166
+ preferredMethod: { optional: { type: 'context', kind: 'explicit', value: 11, contains: { type: 'string', kind: 'utf8' } } }
167
167
  }
168
168
  };
169
169
  export const DocumentFields = ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'];
@@ -171,27 +171,27 @@ export const DocumentSchema = {
171
171
  type: 'struct',
172
172
  fieldNames: ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'],
173
173
  contains: {
174
- documentNumber: { type: 'string', kind: 'utf8' },
175
- front: { optional: ReferenceSchema },
176
- back: { optional: ReferenceSchema },
177
- selfie: { optional: ReferenceSchema },
178
- fullName: { optional: { type: 'string', kind: 'utf8' } },
179
- firstName: { optional: { type: 'string', kind: 'utf8' } },
180
- lastName: { optional: { type: 'string', kind: 'utf8' } },
181
- dob: { optional: ASN1.ValidateASN1.IsDate },
182
- gender: { optional: { type: 'string', kind: 'utf8' } },
183
- address: { optional: AddressSchema },
184
- expiresAt: { optional: ASN1.ValidateASN1.IsDate },
185
- issuedAt: { optional: ASN1.ValidateASN1.IsDate },
186
- issuingState: { optional: { type: 'string', kind: 'utf8' } },
187
- issuingCountry: { optional: { type: 'string', kind: 'utf8' } },
188
- refNumber: { optional: { type: 'string', kind: 'utf8' } },
189
- nationality: { optional: { type: 'string', kind: 'utf8' } },
190
- curp: { optional: { type: 'string', kind: 'utf8' } },
191
- claveDeElector: { optional: { type: 'string', kind: 'utf8' } },
192
- classifiedDocumentType: { optional: { type: 'string', kind: 'utf8' } },
193
- curpValidationResponse: { optional: { type: 'string', kind: 'utf8' } },
194
- sambaActivityHistoryResponse: { optional: { type: 'string', kind: 'utf8' } }
174
+ documentNumber: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
175
+ front: { optional: { type: 'context', kind: 'explicit', value: 1, contains: ReferenceSchema } },
176
+ back: { optional: { type: 'context', kind: 'explicit', value: 2, contains: ReferenceSchema } },
177
+ selfie: { optional: { type: 'context', kind: 'explicit', value: 3, contains: ReferenceSchema } },
178
+ fullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
179
+ firstName: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
180
+ lastName: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
181
+ dob: { optional: { type: 'context', kind: 'explicit', value: 7, contains: ASN1.ValidateASN1.IsDate } },
182
+ gender: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
183
+ address: { optional: { type: 'context', kind: 'explicit', value: 9, contains: AddressSchema } },
184
+ expiresAt: { optional: { type: 'context', kind: 'explicit', value: 10, contains: ASN1.ValidateASN1.IsDate } },
185
+ issuedAt: { optional: { type: 'context', kind: 'explicit', value: 11, contains: ASN1.ValidateASN1.IsDate } },
186
+ issuingState: { optional: { type: 'context', kind: 'explicit', value: 12, contains: { type: 'string', kind: 'utf8' } } },
187
+ issuingCountry: { optional: { type: 'context', kind: 'explicit', value: 13, contains: { type: 'string', kind: 'utf8' } } },
188
+ refNumber: { optional: { type: 'context', kind: 'explicit', value: 14, contains: { type: 'string', kind: 'utf8' } } },
189
+ nationality: { optional: { type: 'context', kind: 'explicit', value: 15, contains: { type: 'string', kind: 'utf8' } } },
190
+ curp: { optional: { type: 'context', kind: 'explicit', value: 16, contains: { type: 'string', kind: 'utf8' } } },
191
+ claveDeElector: { optional: { type: 'context', kind: 'explicit', value: 17, contains: { type: 'string', kind: 'utf8' } } },
192
+ classifiedDocumentType: { optional: { type: 'context', kind: 'explicit', value: 18, contains: { type: 'string', kind: 'utf8' } } },
193
+ curpValidationResponse: { optional: { type: 'context', kind: 'explicit', value: 19, contains: { type: 'string', kind: 'utf8' } } },
194
+ sambaActivityHistoryResponse: { optional: { type: 'context', kind: 'explicit', value: 20, contains: { type: 'string', kind: 'utf8' } } }
195
195
  }
196
196
  };
197
197
  export const CertificateAttributeOIDDB = {
@@ -1 +1 @@
1
- {"version":3,"file":"iso20022.generated.js","sourceRoot":"","sources":["../../../src/services/kyc/iso20022.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n/**\n * Generated ISO20022 Type Definitions\n * This file is auto-generated from oids.json.\n */\n\nimport * as ASN1 from '../../lib/utils/asn1.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\ntype KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;\n\n// ISO20022 Primitive Types\n/** Country code or name */\n/** OID: 1.3.6.1.4.1.62675.1.2.0 */\nexport type Country = string;\n\n/** Country subdivision (state/province) */\n/** OID: 1.3.6.1.4.1.62675.1.2.1 */\nexport type CountrySubDivision = string;\n\n/** Postal code */\n/** OID: 1.3.6.1.4.1.62675.1.2.3 */\nexport type PostalCode = string;\n\n/** Town or city name */\n/** OID: 1.3.6.1.4.1.62675.1.2.4 */\nexport type TownName = string;\n\n/** Building number */\n/** OID: 1.3.6.1.4.1.62675.1.2.5 */\nexport type BuildingNumber = string;\n\n/** Street name */\n/** OID: 1.3.6.1.4.1.62675.1.2.6 */\nexport type StreetName = string;\n\n/** Free-form address lines */\n/** OID: 1.3.6.1.4.1.62675.1.2.7 */\nexport type AddressLines = string[];\n\n/** Sub-department */\n/** OID: 1.3.6.1.4.1.62675.1.2.8 */\nexport type SubDepartment = string;\n\n/** Department */\n/** OID: 1.3.6.1.4.1.62675.1.2.9 */\nexport type Department = string;\n\n/** Purpose of email address */\n/** OID: 1.3.6.1.4.1.62675.1.3.0 */\nexport type EmailAddressPurpose = string;\n\n// ISO20022 Enumeration Types\n/** Name prefix code */\n/** OID: 1.3.6.1.4.1.62675.1.0.0 */\nexport type NamePrefixCode = 'DOCT' | 'MIST' | 'MISS' | 'MIKS' | 'MME';\n\n/** Preferred contact method */\n/** OID: 1.3.6.1.4.1.62675.1.9.0 */\nexport type PreferredContactMethodCode = 'LETT' | 'MAIL' | 'PHON' | 'FAXX' | 'CELL';\n\n/** Person identification scheme name proprietary values */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.1.0 */\nexport type PersonIdentificationSchemeNameProprietary = 'DRLC' | 'CPPT' | 'ARNU' | 'SSN' | 'TXID' | 'VISA' | 'WPPT';\n\n// ISO20022 Choice Types\n/** Address type classification */\n/** OID: 1.3.6.1.4.1.62675.1.2.10 */\nexport type AddressType = string;\n\n/** Organization identification scheme name */\n/** OID: 1.3.6.1.4.1.62675.1.8.0.2 */\nexport type OrganizationIdentificationSchemeNameChoice = string;\n\n/** Person identification scheme name */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.1 */\nexport type PersonIdentificationSchemeNameChoice = string | PersonIdentificationSchemeNameProprietary;\n\n// ISO20022 Sequence Types\n/** Generic organization identification */\n/** OID: 1.3.6.1.4.1.62675.1.8.0.1 */\nexport interface GenericOrganizationIdentification {\n\tid: Id;\n\tschemeName?: OrganizationIdentificationSchemeNameChoice;\n\tissuer?: Issuer;\n}\n\nexport interface OrganizationIdentificationBicChoice {\n\ttag: 0;\n\tname: 'bic';\n\tvalue: string;\n}\n\nexport interface OrganizationIdentificationLeiChoice {\n\ttag: 1;\n\tname: 'lei';\n\tvalue: string;\n}\n\nexport interface OrganizationIdentificationOtherChoice {\n\ttag: 2;\n\tname: 'other';\n\tvalue: GenericOrganizationIdentification[];\n}\nexport type OrganizationIdentificationChoice =\n\t| OrganizationIdentificationBicChoice\n\t| OrganizationIdentificationLeiChoice\n\t| OrganizationIdentificationOtherChoice;\n\nexport type OrganizationIdentification = OrganizationIdentificationChoice[];\n\n\n/** Generic person identification */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.0 */\nexport interface GenericPersonIdentification {\n\tid: Id;\n\tschemeName?: PersonIdentificationSchemeNameChoice;\n\tissuer?: Issuer;\n}\n\nexport interface PersonIdentificationDateAndPlaceOfBirthChoice {\n\ttag: 0;\n\tname: 'dateAndPlaceOfBirth';\n\tvalue: DateAndPlaceOfBirth;\n}\n\nexport interface PersonIdentificationOtherChoice {\n\ttag: 1;\n\tname: 'other';\n\tvalue: GenericPersonIdentification[];\n}\nexport type PersonIdentificationChoice =\n\t| PersonIdentificationDateAndPlaceOfBirthChoice\n\t| PersonIdentificationOtherChoice;\n\nexport type PersonIdentification = PersonIdentificationChoice[];\n\n\n/** Other contact method */\n/** OID: 1.3.6.1.4.1.62675.1.9.1 */\nexport interface OtherContact {\n\tid?: Id;\n\tchannelType: string;\n}\n\n\n// Generated ASN.1 schemas for ISO 20022 choice types\n/** ASN.1 schema for AddressType */\nexport const AddressTypeSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n/** ASN.1 schema for OrganizationIdentificationSchemeNameChoice */\nexport const OrganizationIdentificationSchemeNameChoiceSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n/** ASN.1 schema for PersonIdentificationSchemeNameChoice */\nexport const PersonIdentificationSchemeNameChoiceSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n// Generated ASN.1 schemas for ISO 20022 regular sequence types\n/** ASN.1 schema for GenericOrganizationIdentification */\nexport const GenericOrganizationIdentificationSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['id', 'issuer', 'schemeName'],\n\tcontains: {\n\t\tid: { type: 'string', kind: 'utf8' },\n\t\tissuer: { optional: { type: 'string', kind: 'utf8' } },\n\t\tschemeName: { optional: OrganizationIdentificationSchemeNameChoiceSchema }\n\t}\n};\n\n/** ASN.1 schema for GenericPersonIdentification */\nexport const GenericPersonIdentificationSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['id', 'issuer', 'schemeName'],\n\tcontains: {\n\t\tid: { type: 'string', kind: 'utf8' },\n\t\tissuer: { optional: { type: 'string', kind: 'utf8' } },\n\t\tschemeName: { optional: PersonIdentificationSchemeNameChoiceSchema }\n\t}\n};\n\n/** ASN.1 schema for OtherContact */\nexport const OtherContactSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['channelType', 'id'],\n\tcontains: {\n\t\tchannelType: { type: 'string', kind: 'utf8' },\n\t\tid: { optional: { type: 'string', kind: 'utf8' } }\n\t}\n};\n\n// Generated ASN.1 schemas for ISO 20022 sequence-of-choice types\n/** ASN.1 schema for OrganizationIdentification */\nexport const OrganizationIdentificationSchema: ASN1.Schema = {\n\tsequenceOf: {\n\t\tchoice: [\n\t\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 2, contains: GenericOrganizationIdentificationSchema }\n\t\t]\n\t}\n};\n\nexport const OrganizationIdentificationFields = [\n\t'bic',\n\t'lei',\n\t'other'\n] as const;\n\n\n/** ASN.1 schema for PersonIdentification */\nexport const PersonIdentificationSchema: ASN1.Schema = {\n\tsequenceOf: {\n\t\tchoice: [\n\t\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 1, contains: GenericPersonIdentificationSchema }\n\t\t]\n\t}\n};\n\nexport const PersonIdentificationFields = [\n\t'dateAndPlaceOfBirth',\n\t'other'\n] as const;\n\n\n// Generated ASN.1 schemas for choice-type sensitive attributes\n/** Person's full name */\n/** OID: 1.3.6.1.4.1.62675.1.0 */\nexport type FullName = string;\n\n/** Person's first name */\n/** OID: 1.3.6.1.4.1.62675.1.0.1 */\nexport type FirstName = string;\n\n/** Person's last name */\n/** OID: 1.3.6.1.4.1.62675.1.0.2 */\nexport type LastName = string;\n\n/** Person's middle name */\n/** OID: 1.3.6.1.4.1.62675.1.0.3 */\nexport type MiddleName = string;\n\n/** Date of birth */\n/** OID: 1.3.6.1.4.1.62675.1.1 */\nexport type DateOfBirth = Date;\n\n/** Physical address */\n/** OID: 1.3.6.1.4.1.62675.1.2 */\nexport interface Address {\n\taddressType?: AddressType;\n\tdepartment?: Department;\n\tsubDepartment?: SubDepartment;\n\tstreetName?: StreetName;\n\tbuildingNumber?: BuildingNumber;\n\tpostalCode?: PostalCode;\n\ttownName?: TownName;\n\tcountrySubDivision?: CountrySubDivision;\n\tcountry?: Country;\n\taddressLines?: AddressLines;\n}\n\n/** Email address */\n/** OID: 1.3.6.1.4.1.62675.1.3 */\nexport type Email = string;\n\n/** Phone number */\n/** OID: 1.3.6.1.4.1.62675.1.4 */\nexport type PhoneNumber = string;\n\n/** Date and place of birth information */\n/** OID: 1.3.6.1.4.1.62675.1.5 */\nexport interface DateAndPlaceOfBirth {\n\tbirthDate: BirthDate;\n\tprovinceOfBirth?: CountrySubDivision;\n\tcityOfBirth: TownName;\n\tcountryOfBirth: Country;\n}\n\n/** Job title */\n/** OID: 1.3.6.1.4.1.62675.1.6 */\nexport type JobTitle = string;\n\n/** Job responsibility */\n/** OID: 1.3.6.1.4.1.62675.1.6.1 */\nexport type JobResponsibility = string;\n\n/** Identifier */\n/** OID: 1.3.6.1.4.1.62675.1.7 */\nexport type Id = string;\n\n/** Issuer identifier */\n/** OID: 1.3.6.1.4.1.62675.1.7.1 */\nexport type Issuer = string;\n\n/** Entity type (organization or person) */\n/** OID: 1.3.6.1.4.1.62675.1.8 */\nexport interface EntityType {\n\torganization?: GenericOrganizationIdentification[];\n\tperson?: GenericPersonIdentification[];\n}\n\n/** Contact details */\n/** OID: 1.3.6.1.4.1.62675.1.9 */\nexport interface ContactDetails {\n\tnamePrefix?: NamePrefixCode;\n\tfullName?: FullName;\n\tphoneNumber?: PhoneNumber;\n\tmobileNumber?: PhoneNumber;\n\tfaxNumber?: PhoneNumber;\n\temailAddress?: EmailAddress;\n\temailPurpose?: EmailAddressPurpose;\n\tjobTitle?: JobTitle;\n\tjobResponsibility?: JobResponsibility;\n\tdepartment?: Department;\n\tother?: OtherContact[];\n\tpreferredMethod?: PreferredContactMethodCode;\n}\n\n/** Nationality */\n/** OID: 1.3.6.1.4.1.62675.1.10 */\nexport type Nationality = string;\n\n/** Generic document structure with metadata */\n/** OID: 1.3.6.1.4.1.62675.1.11 */\nexport interface Document {\n\tdocumentNumber: string;\n\tfront?: Reference;\n\tback?: Reference;\n\tselfie?: Reference;\n\tfullName?: string;\n\tfirstName?: string;\n\tlastName?: string;\n\tdob?: Date;\n\tgender?: string;\n\taddress?: Address;\n\texpiresAt?: Date;\n\tissuedAt?: Date;\n\tissuingState?: string;\n\tissuingCountry?: string;\n\trefNumber?: string;\n\tnationality?: string;\n\tcurp?: string;\n\tclaveDeElector?: string;\n\tclassifiedDocumentType?: string;\n\tcurpValidationResponse?: string;\n\tsambaActivityHistoryResponse?: string;\n}\n\n/** Driver's license document */\n/** OID: 1.3.6.1.4.1.62675.1.11.0 */\nexport type DocumentDriversLicense = Document;\n\n/** ID card document */\n/** OID: 1.3.6.1.4.1.62675.1.11.1 */\nexport type DocumentIdCard = Document;\n\n/** Passport document */\n/** OID: 1.3.6.1.4.1.62675.1.11.2 */\nexport type DocumentPassport = Document;\n\n/** Passport card document */\n/** OID: 1.3.6.1.4.1.62675.1.11.3 */\nexport type DocumentPassportCard = Document;\n\n/** Permit document */\n/** OID: 1.3.6.1.4.1.62675.1.11.4 */\nexport type DocumentPermit = Document;\n\n/** Visa document */\n/** OID: 1.3.6.1.4.1.62675.1.11.5 */\nexport type DocumentVisa = Document;\n\n/** Residence document */\n/** OID: 1.3.6.1.4.1.62675.1.11.6 */\nexport type DocumentResidenceDocument = Document;\n\n/** DigestInfo from RFC 3447 */\nexport interface DigestInfo {\n\tdigestAlgorithm: ASN1.ASN1OID;\n\tdigest: Buffer;\n}\n\nexport const DigestInfoSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['digestAlgorithm', 'digest'],\n\tcontains: {\n\t\tdigestAlgorithm: ASN1.ValidateASN1.IsOID,\n\t\tdigest: ASN1.ValidateASN1.IsOctetString\n\t}\n};\n\n/** External reference pointer */\nexport interface ExternalReference {\n\turl: string;\n\tcontentType: string;\n}\n\nexport const ExternalReferenceSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['url', 'contentType'],\n\tcontains: {\n\t\turl: { type: 'string', kind: 'utf8' },\n\t\tcontentType: { type: 'string', kind: 'utf8' }\n\t}\n};\n\n/** Reference */\nexport interface Reference {\n\texternal: ExternalReference;\n\tdigest: DigestInfo;\n\tencryptionAlgorithm: ASN1.ASN1OID;\n\t/**\n\t * TODOC\n\t */\n\t$blob: (principals?: KeetaNetAccount[]) => Promise<Blob>;\n}\n\nexport const ReferenceSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['external', 'digest', 'encryptionAlgorithm'],\n\tcontains: {\n\t\texternal: ExternalReferenceSchema,\n\t\tdigest: DigestInfoSchema,\n\t\tencryptionAlgorithm: ASN1.ValidateASN1.IsOID\n\t}\n};\n\n// Token aliases for sensitive attributes\n/** Alias for DateOfBirth */\nexport type BirthDate = DateOfBirth;\n\n/** Alias for Email */\nexport type EmailAddress = Email;\n\n/** Union type of all sensitive attribute types */\nexport type SensitiveAttributeType =\n\t| FullName\n\t| FirstName\n\t| LastName\n\t| MiddleName\n\t| DateOfBirth\n\t| Address\n\t| Email\n\t| PhoneNumber\n\t| DateAndPlaceOfBirth\n\t| JobTitle\n\t| JobResponsibility\n\t| Id\n\t| Issuer\n\t| EntityType\n\t| ContactDetails\n\t| Nationality\n\t| Document\n\t| DocumentDriversLicense\n\t| DocumentIdCard\n\t| DocumentPassport\n\t| DocumentPassportCard\n\t| DocumentPermit\n\t| DocumentVisa\n\t| DocumentResidenceDocument;\n\n/** Map of attribute name to acceptable input type for CertificateBuilder.setAttribute */\nexport interface CertificateAttributeValueMap {\n\t'fullName': FullName;\n\t'firstName': FirstName;\n\t'lastName': LastName;\n\t'middleName': MiddleName;\n\t'dateOfBirth': DateOfBirth;\n\t'address': Address;\n\t'email': Email;\n\t'phoneNumber': PhoneNumber;\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirth;\n\t'jobTitle': JobTitle;\n\t'jobResponsibility': JobResponsibility;\n\t'id': Id;\n\t'issuer': Issuer;\n\t'entityType': EntityType;\n\t'contactDetails': ContactDetails;\n\t'nationality': Nationality;\n\t'document': Document;\n\t'documentDriversLicense': DocumentDriversLicense;\n\t'documentIdCard': DocumentIdCard;\n\t'documentPassport': DocumentPassport;\n\t'documentPassportCard': DocumentPassportCard;\n\t'documentPermit': DocumentPermit;\n\t'documentVisa': DocumentVisa;\n\t'documentResidenceDocument': DocumentResidenceDocument;\n}\n\n/** Helper generic to get attribute value type by name */\nexport type CertificateAttributeValue<Name extends keyof CertificateAttributeValueMap> = CertificateAttributeValueMap[Name];\n\nexport const AddressFields = ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'] as const;\nexport const AddressSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'],\n\tcontains: {\n\t\taddressLines: { optional: { sequenceOf: { type: 'string', kind: 'utf8' } } },\n\t\taddressType: { optional: AddressTypeSchema },\n\t\tbuildingNumber: { optional: { type: 'string', kind: 'utf8' } },\n\t\tcountry: { optional: { type: 'string', kind: 'utf8' } },\n\t\tcountrySubDivision: { optional: { type: 'string', kind: 'utf8' } },\n\t\tdepartment: { optional: { type: 'string', kind: 'utf8' } },\n\t\tpostalCode: { optional: { type: 'string', kind: 'utf8' } },\n\t\tstreetName: { optional: { type: 'string', kind: 'utf8' } },\n\t\tsubDepartment: { optional: { type: 'string', kind: 'utf8' } },\n\t\ttownName: { optional: { type: 'string', kind: 'utf8' } }\n\t}\n};\nexport const DateAndPlaceOfBirthFields = ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'] as const;\nexport const DateAndPlaceOfBirthSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'],\n\tcontains: {\n\t\tbirthDate: ASN1.ValidateASN1.IsDate,\n\t\tcityOfBirth: { type: 'string', kind: 'utf8' },\n\t\tcountryOfBirth: { type: 'string', kind: 'utf8' },\n\t\tprovinceOfBirth: { optional: { type: 'string', kind: 'utf8' } }\n\t}\n};\nexport const EntityTypeFields = ['organization', 'person'] as const;\nexport const EntityTypeSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['organization', 'person'],\n\tcontains: {\n\t\torganization: { optional: { sequenceOf: GenericOrganizationIdentificationSchema } },\n\t\tperson: { optional: { sequenceOf: GenericPersonIdentificationSchema } }\n\t}\n};\nexport const ContactDetailsFields = ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'] as const;\nexport const ContactDetailsSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'],\n\tcontains: {\n\t\tdepartment: { optional: { type: 'string', kind: 'utf8' } },\n\t\temailAddress: { optional: { type: 'string', kind: 'utf8' } },\n\t\temailPurpose: { optional: { type: 'string', kind: 'utf8' } },\n\t\tfaxNumber: { optional: { type: 'string', kind: 'utf8' } },\n\t\tfullName: { optional: { type: 'string', kind: 'utf8' } },\n\t\tjobResponsibility: { optional: { type: 'string', kind: 'utf8' } },\n\t\tjobTitle: { optional: { type: 'string', kind: 'utf8' } },\n\t\tmobileNumber: { optional: { type: 'string', kind: 'utf8' } },\n\t\tnamePrefix: { optional: { type: 'string', kind: 'utf8' } },\n\t\tother: { optional: { sequenceOf: OtherContactSchema } },\n\t\tphoneNumber: { optional: { type: 'string', kind: 'utf8' } },\n\t\tpreferredMethod: { optional: { type: 'string', kind: 'utf8' } }\n\t}\n};\nexport const DocumentFields = ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'] as const;\nexport const DocumentSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'],\n\tcontains: {\n\t\tdocumentNumber: { type: 'string', kind: 'utf8' },\n\t\tfront: { optional: ReferenceSchema },\n\t\tback: { optional: ReferenceSchema },\n\t\tselfie: { optional: ReferenceSchema },\n\t\tfullName: { optional: { type: 'string', kind: 'utf8' } },\n\t\tfirstName: { optional: { type: 'string', kind: 'utf8' } },\n\t\tlastName: { optional: { type: 'string', kind: 'utf8' } },\n\t\tdob: { optional: ASN1.ValidateASN1.IsDate },\n\t\tgender: { optional: { type: 'string', kind: 'utf8' } },\n\t\taddress: { optional: AddressSchema },\n\t\texpiresAt: { optional: ASN1.ValidateASN1.IsDate },\n\t\tissuedAt: { optional: ASN1.ValidateASN1.IsDate },\n\t\tissuingState: { optional: { type: 'string', kind: 'utf8' } },\n\t\tissuingCountry: { optional: { type: 'string', kind: 'utf8' } },\n\t\trefNumber: { optional: { type: 'string', kind: 'utf8' } },\n\t\tnationality: { optional: { type: 'string', kind: 'utf8' } },\n\t\tcurp: { optional: { type: 'string', kind: 'utf8' } },\n\t\tclaveDeElector: { optional: { type: 'string', kind: 'utf8' } },\n\t\tclassifiedDocumentType: { optional: { type: 'string', kind: 'utf8' } },\n\t\tcurpValidationResponse: { optional: { type: 'string', kind: 'utf8' } },\n\t\tsambaActivityHistoryResponse: { optional: { type: 'string', kind: 'utf8' } }\n\t}\n};\nexport const CertificateAttributeOIDDB = {\n\t'fullName': '1.3.6.1.4.1.62675.1.0',\n\t'firstName': '1.3.6.1.4.1.62675.1.0.1',\n\t'lastName': '1.3.6.1.4.1.62675.1.0.2',\n\t'middleName': '1.3.6.1.4.1.62675.1.0.3',\n\t'dateOfBirth': '1.3.6.1.4.1.62675.1.1',\n\t'address': '1.3.6.1.4.1.62675.1.2',\n\t'email': '1.3.6.1.4.1.62675.1.3',\n\t'phoneNumber': '1.3.6.1.4.1.62675.1.4',\n\t'dateAndPlaceOfBirth': '1.3.6.1.4.1.62675.1.5',\n\t'jobTitle': '1.3.6.1.4.1.62675.1.6',\n\t'jobResponsibility': '1.3.6.1.4.1.62675.1.6.1',\n\t'id': '1.3.6.1.4.1.62675.1.7',\n\t'issuer': '1.3.6.1.4.1.62675.1.7.1',\n\t'entityType': '1.3.6.1.4.1.62675.1.8',\n\t'contactDetails': '1.3.6.1.4.1.62675.1.9',\n\t'nationality': '1.3.6.1.4.1.62675.1.10',\n\t'document': '1.3.6.1.4.1.62675.1.11',\n\t'documentDriversLicense': '1.3.6.1.4.1.62675.1.11.0',\n\t'documentIdCard': '1.3.6.1.4.1.62675.1.11.1',\n\t'documentPassport': '1.3.6.1.4.1.62675.1.11.2',\n\t'documentPassportCard': '1.3.6.1.4.1.62675.1.11.3',\n\t'documentPermit': '1.3.6.1.4.1.62675.1.11.4',\n\t'documentVisa': '1.3.6.1.4.1.62675.1.11.5',\n\t'documentResidenceDocument': '1.3.6.1.4.1.62675.1.11.6'\n} as const;\n\nexport const SENSITIVE_CERTIFICATE_ATTRIBUTES = [\n\t'fullName',\n\t'firstName',\n\t'lastName',\n\t'middleName',\n\t'dateOfBirth',\n\t'address',\n\t'email',\n\t'phoneNumber',\n\t'dateAndPlaceOfBirth',\n\t'jobTitle',\n\t'jobResponsibility',\n\t'id',\n\t'issuer',\n\t'entityType',\n\t'contactDetails',\n\t'nationality',\n\t'document',\n\t'documentDriversLicense',\n\t'documentIdCard',\n\t'documentPassport',\n\t'documentPassportCard',\n\t'documentPermit',\n\t'documentVisa',\n\t'documentResidenceDocument'\n] as const;\n\nexport type SensitiveCertificateAttributeNames = typeof SENSITIVE_CERTIFICATE_ATTRIBUTES[number];\n\nexport const SensitiveCertificateAttributeNames = [\n\t'FullName',\n\t'FirstName',\n\t'LastName',\n\t'MiddleName',\n\t'DateOfBirth',\n\t'Address',\n\t'Email',\n\t'PhoneNumber',\n\t'DateAndPlaceOfBirth',\n\t'JobTitle',\n\t'JobResponsibility',\n\t'Id',\n\t'Issuer',\n\t'EntityType',\n\t'ContactDetails',\n\t'Nationality',\n\t'Document',\n\t'DocumentDriversLicense',\n\t'DocumentIdCard',\n\t'DocumentPassport',\n\t'DocumentPassportCard',\n\t'DocumentPermit',\n\t'DocumentVisa',\n\t'DocumentResidenceDocument'\n] as const;\n\nexport const CertificateAttributeFieldNames: { readonly [K in keyof typeof CertificateAttributeOIDDB]?: readonly string[] } = {\n\t'address': AddressFields,\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirthFields,\n\t'entityType': EntityTypeFields,\n\t'contactDetails': ContactDetailsFields,\n\t'document': DocumentFields\n} as const;\n\nexport const CertificateAttributeSchema: { readonly [K in keyof typeof CertificateAttributeOIDDB]: ASN1.Schema } = {\n\t'fullName': { type: 'string', kind: 'utf8' },\n\t'firstName': { type: 'string', kind: 'utf8' },\n\t'lastName': { type: 'string', kind: 'utf8' },\n\t'middleName': { type: 'string', kind: 'utf8' },\n\t'dateOfBirth': ASN1.ValidateASN1.IsDate,\n\t'address': AddressSchema,\n\t'email': { type: 'string', kind: 'utf8' },\n\t'phoneNumber': { type: 'string', kind: 'utf8' },\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirthSchema,\n\t'jobTitle': { type: 'string', kind: 'utf8' },\n\t'jobResponsibility': { type: 'string', kind: 'utf8' },\n\t'id': { type: 'string', kind: 'utf8' },\n\t'issuer': { type: 'string', kind: 'utf8' },\n\t'entityType': EntityTypeSchema,\n\t'contactDetails': ContactDetailsSchema,\n\t'nationality': { type: 'string', kind: 'utf8' },\n\t'document': DocumentSchema,\n\t'documentDriversLicense': DocumentSchema,\n\t'documentIdCard': DocumentSchema,\n\t'documentPassport': DocumentSchema,\n\t'documentPassportCard': DocumentSchema,\n\t'documentPermit': DocumentSchema,\n\t'documentVisa': DocumentSchema,\n\t'documentResidenceDocument': DocumentSchema\n} as const;\n"]}
1
+ {"version":3,"file":"iso20022.generated.js","sourceRoot":"","sources":["../../../src/services/kyc/iso20022.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n/**\n * Generated ISO20022 Type Definitions\n * This file is auto-generated from oids.json.\n */\n\nimport * as ASN1 from '../../lib/utils/asn1.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\ntype KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;\n\n// ISO20022 Primitive Types\n/** Country code or name */\n/** OID: 1.3.6.1.4.1.62675.1.2.0 */\nexport type Country = string;\n\n/** Country subdivision (state/province) */\n/** OID: 1.3.6.1.4.1.62675.1.2.1 */\nexport type CountrySubDivision = string;\n\n/** Postal code */\n/** OID: 1.3.6.1.4.1.62675.1.2.3 */\nexport type PostalCode = string;\n\n/** Town or city name */\n/** OID: 1.3.6.1.4.1.62675.1.2.4 */\nexport type TownName = string;\n\n/** Building number */\n/** OID: 1.3.6.1.4.1.62675.1.2.5 */\nexport type BuildingNumber = string;\n\n/** Street name */\n/** OID: 1.3.6.1.4.1.62675.1.2.6 */\nexport type StreetName = string;\n\n/** Free-form address lines */\n/** OID: 1.3.6.1.4.1.62675.1.2.7 */\nexport type AddressLines = string[];\n\n/** Sub-department */\n/** OID: 1.3.6.1.4.1.62675.1.2.8 */\nexport type SubDepartment = string;\n\n/** Department */\n/** OID: 1.3.6.1.4.1.62675.1.2.9 */\nexport type Department = string;\n\n/** Purpose of email address */\n/** OID: 1.3.6.1.4.1.62675.1.3.0 */\nexport type EmailAddressPurpose = string;\n\n// ISO20022 Enumeration Types\n/** Name prefix code */\n/** OID: 1.3.6.1.4.1.62675.1.0.0 */\nexport type NamePrefixCode = 'DOCT' | 'MIST' | 'MISS' | 'MIKS' | 'MME';\n\n/** Preferred contact method */\n/** OID: 1.3.6.1.4.1.62675.1.9.0 */\nexport type PreferredContactMethodCode = 'LETT' | 'MAIL' | 'PHON' | 'FAXX' | 'CELL';\n\n/** Person identification scheme name proprietary values */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.1.0 */\nexport type PersonIdentificationSchemeNameProprietary = 'DRLC' | 'CPPT' | 'ARNU' | 'SSN' | 'TXID' | 'VISA' | 'WPPT';\n\n// ISO20022 Choice Types\n/** Address type classification */\n/** OID: 1.3.6.1.4.1.62675.1.2.10 */\nexport type AddressType = string;\n\n/** Organization identification scheme name */\n/** OID: 1.3.6.1.4.1.62675.1.8.0.2 */\nexport type OrganizationIdentificationSchemeNameChoice = string;\n\n/** Person identification scheme name */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.1 */\nexport type PersonIdentificationSchemeNameChoice = string | PersonIdentificationSchemeNameProprietary;\n\n// ISO20022 Sequence Types\n/** Generic organization identification */\n/** OID: 1.3.6.1.4.1.62675.1.8.0.1 */\nexport interface GenericOrganizationIdentification {\n\tid: Id;\n\tschemeName?: OrganizationIdentificationSchemeNameChoice;\n\tissuer?: Issuer;\n}\n\nexport interface OrganizationIdentificationBicChoice {\n\ttag: 0;\n\tname: 'bic';\n\tvalue: string;\n}\n\nexport interface OrganizationIdentificationLeiChoice {\n\ttag: 1;\n\tname: 'lei';\n\tvalue: string;\n}\n\nexport interface OrganizationIdentificationOtherChoice {\n\ttag: 2;\n\tname: 'other';\n\tvalue: GenericOrganizationIdentification[];\n}\nexport type OrganizationIdentificationChoice =\n\t| OrganizationIdentificationBicChoice\n\t| OrganizationIdentificationLeiChoice\n\t| OrganizationIdentificationOtherChoice;\n\nexport type OrganizationIdentification = OrganizationIdentificationChoice[];\n\n\n/** Generic person identification */\n/** OID: 1.3.6.1.4.1.62675.1.8.1.0 */\nexport interface GenericPersonIdentification {\n\tid: Id;\n\tschemeName?: PersonIdentificationSchemeNameChoice;\n\tissuer?: Issuer;\n}\n\nexport interface PersonIdentificationDateAndPlaceOfBirthChoice {\n\ttag: 0;\n\tname: 'dateAndPlaceOfBirth';\n\tvalue: DateAndPlaceOfBirth;\n}\n\nexport interface PersonIdentificationOtherChoice {\n\ttag: 1;\n\tname: 'other';\n\tvalue: GenericPersonIdentification[];\n}\nexport type PersonIdentificationChoice =\n\t| PersonIdentificationDateAndPlaceOfBirthChoice\n\t| PersonIdentificationOtherChoice;\n\nexport type PersonIdentification = PersonIdentificationChoice[];\n\n\n/** Other contact method */\n/** OID: 1.3.6.1.4.1.62675.1.9.1 */\nexport interface OtherContact {\n\tid?: Id;\n\tchannelType: string;\n}\n\n\n// Generated ASN.1 schemas for ISO 20022 choice types\n/** ASN.1 schema for AddressType */\nexport const AddressTypeSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n/** ASN.1 schema for OrganizationIdentificationSchemeNameChoice */\nexport const OrganizationIdentificationSchemeNameChoiceSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n/** ASN.1 schema for PersonIdentificationSchemeNameChoice */\nexport const PersonIdentificationSchemeNameChoiceSchema: ASN1.Schema = {\n\tchoice: [\n\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }\n\t]\n};\n\n// Generated ASN.1 schemas for ISO 20022 regular sequence types\n/** ASN.1 schema for GenericOrganizationIdentification */\nexport const GenericOrganizationIdentificationSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['id', 'issuer', 'schemeName'],\n\tcontains: {\n\t\tid: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\tissuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },\n\t\tschemeName: { optional: OrganizationIdentificationSchemeNameChoiceSchema }\n\t}\n};\n\n/** ASN.1 schema for GenericPersonIdentification */\nexport const GenericPersonIdentificationSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['id', 'issuer', 'schemeName'],\n\tcontains: {\n\t\tid: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\tissuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },\n\t\tschemeName: { optional: PersonIdentificationSchemeNameChoiceSchema }\n\t}\n};\n\n/** ASN.1 schema for OtherContact */\nexport const OtherContactSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['channelType', 'id'],\n\tcontains: {\n\t\tchannelType: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\tid: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } }\n\t}\n};\n\n// Generated ASN.1 schemas for ISO 20022 sequence-of-choice types\n/** ASN.1 schema for OrganizationIdentification */\nexport const OrganizationIdentificationSchema: ASN1.Schema = {\n\tsequenceOf: {\n\t\tchoice: [\n\t\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 2, contains: GenericOrganizationIdentificationSchema }\n\t\t]\n\t}\n};\n\nexport const OrganizationIdentificationFields = [\n\t'bic',\n\t'lei',\n\t'other'\n] as const;\n\n\n/** ASN.1 schema for PersonIdentification */\nexport const PersonIdentificationSchema: ASN1.Schema = {\n\tsequenceOf: {\n\t\tchoice: [\n\t\t\t{ type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\t\t{ type: 'context', kind: 'explicit', value: 1, contains: GenericPersonIdentificationSchema }\n\t\t]\n\t}\n};\n\nexport const PersonIdentificationFields = [\n\t'dateAndPlaceOfBirth',\n\t'other'\n] as const;\n\n\n// Generated ASN.1 schemas for choice-type sensitive attributes\n/** Person's full name */\n/** OID: 1.3.6.1.4.1.62675.1.0 */\nexport type FullName = string;\n\n/** Person's first name */\n/** OID: 1.3.6.1.4.1.62675.1.0.1 */\nexport type FirstName = string;\n\n/** Person's last name */\n/** OID: 1.3.6.1.4.1.62675.1.0.2 */\nexport type LastName = string;\n\n/** Person's middle name */\n/** OID: 1.3.6.1.4.1.62675.1.0.3 */\nexport type MiddleName = string;\n\n/** Date of birth */\n/** OID: 1.3.6.1.4.1.62675.1.1 */\nexport type DateOfBirth = Date;\n\n/** Physical address */\n/** OID: 1.3.6.1.4.1.62675.1.2 */\nexport interface Address {\n\taddressType?: AddressType;\n\tdepartment?: Department;\n\tsubDepartment?: SubDepartment;\n\tstreetName?: StreetName;\n\tbuildingNumber?: BuildingNumber;\n\tpostalCode?: PostalCode;\n\ttownName?: TownName;\n\tcountrySubDivision?: CountrySubDivision;\n\tcountry?: Country;\n\taddressLines?: AddressLines;\n}\n\n/** Email address */\n/** OID: 1.3.6.1.4.1.62675.1.3 */\nexport type Email = string;\n\n/** Phone number */\n/** OID: 1.3.6.1.4.1.62675.1.4 */\nexport type PhoneNumber = string;\n\n/** Date and place of birth information */\n/** OID: 1.3.6.1.4.1.62675.1.5 */\nexport interface DateAndPlaceOfBirth {\n\tbirthDate: BirthDate;\n\tprovinceOfBirth?: CountrySubDivision;\n\tcityOfBirth: TownName;\n\tcountryOfBirth: Country;\n}\n\n/** Job title */\n/** OID: 1.3.6.1.4.1.62675.1.6 */\nexport type JobTitle = string;\n\n/** Job responsibility */\n/** OID: 1.3.6.1.4.1.62675.1.6.1 */\nexport type JobResponsibility = string;\n\n/** Identifier */\n/** OID: 1.3.6.1.4.1.62675.1.7 */\nexport type Id = string;\n\n/** Issuer identifier */\n/** OID: 1.3.6.1.4.1.62675.1.7.1 */\nexport type Issuer = string;\n\n/** Entity type (organization or person) */\n/** OID: 1.3.6.1.4.1.62675.1.8 */\nexport interface EntityType {\n\torganization?: GenericOrganizationIdentification[];\n\tperson?: GenericPersonIdentification[];\n}\n\n/** Contact details */\n/** OID: 1.3.6.1.4.1.62675.1.9 */\nexport interface ContactDetails {\n\tnamePrefix?: NamePrefixCode;\n\tfullName?: FullName;\n\tphoneNumber?: PhoneNumber;\n\tmobileNumber?: PhoneNumber;\n\tfaxNumber?: PhoneNumber;\n\temailAddress?: EmailAddress;\n\temailPurpose?: EmailAddressPurpose;\n\tjobTitle?: JobTitle;\n\tjobResponsibility?: JobResponsibility;\n\tdepartment?: Department;\n\tother?: OtherContact[];\n\tpreferredMethod?: PreferredContactMethodCode;\n}\n\n/** Nationality */\n/** OID: 1.3.6.1.4.1.62675.1.10 */\nexport type Nationality = string;\n\n/** Generic document structure with metadata */\n/** OID: 1.3.6.1.4.1.62675.1.11 */\nexport interface Document {\n\tdocumentNumber: string;\n\tfront?: Reference;\n\tback?: Reference;\n\tselfie?: Reference;\n\tfullName?: string;\n\tfirstName?: string;\n\tlastName?: string;\n\tdob?: Date;\n\tgender?: string;\n\taddress?: Address;\n\texpiresAt?: Date;\n\tissuedAt?: Date;\n\tissuingState?: string;\n\tissuingCountry?: string;\n\trefNumber?: string;\n\tnationality?: string;\n\tcurp?: string;\n\tclaveDeElector?: string;\n\tclassifiedDocumentType?: string;\n\tcurpValidationResponse?: string;\n\tsambaActivityHistoryResponse?: string;\n}\n\n/** Driver's license document */\n/** OID: 1.3.6.1.4.1.62675.1.11.0 */\nexport type DocumentDriversLicense = Document;\n\n/** ID card document */\n/** OID: 1.3.6.1.4.1.62675.1.11.1 */\nexport type DocumentIdCard = Document;\n\n/** Passport document */\n/** OID: 1.3.6.1.4.1.62675.1.11.2 */\nexport type DocumentPassport = Document;\n\n/** Passport card document */\n/** OID: 1.3.6.1.4.1.62675.1.11.3 */\nexport type DocumentPassportCard = Document;\n\n/** Permit document */\n/** OID: 1.3.6.1.4.1.62675.1.11.4 */\nexport type DocumentPermit = Document;\n\n/** Visa document */\n/** OID: 1.3.6.1.4.1.62675.1.11.5 */\nexport type DocumentVisa = Document;\n\n/** Residence document */\n/** OID: 1.3.6.1.4.1.62675.1.11.6 */\nexport type DocumentResidenceDocument = Document;\n\n/** DigestInfo from RFC 3447 */\nexport interface DigestInfo {\n\tdigestAlgorithm: ASN1.ASN1OID;\n\tdigest: Buffer;\n}\n\nexport const DigestInfoSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['digestAlgorithm', 'digest'],\n\tcontains: {\n\t\tdigestAlgorithm: ASN1.ValidateASN1.IsOID,\n\t\tdigest: ASN1.ValidateASN1.IsOctetString\n\t}\n};\n\n/** External reference pointer */\nexport interface ExternalReference {\n\turl: string;\n\tcontentType: string;\n}\n\nexport const ExternalReferenceSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['url', 'contentType'],\n\tcontains: {\n\t\turl: { type: 'string', kind: 'utf8' },\n\t\tcontentType: { type: 'string', kind: 'utf8' }\n\t}\n};\n\n/** Reference */\nexport interface Reference {\n\texternal: ExternalReference;\n\tdigest: DigestInfo;\n\tencryptionAlgorithm: ASN1.ASN1OID;\n\t/**\n\t * TODOC\n\t */\n\t$blob: (principals?: KeetaNetAccount[]) => Promise<Blob>;\n}\n\nexport const ReferenceSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['external', 'digest', 'encryptionAlgorithm'],\n\tcontains: {\n\t\texternal: ExternalReferenceSchema,\n\t\tdigest: DigestInfoSchema,\n\t\tencryptionAlgorithm: ASN1.ValidateASN1.IsOID\n\t}\n};\n\n// Token aliases for sensitive attributes\n/** Alias for DateOfBirth */\nexport type BirthDate = DateOfBirth;\n\n/** Alias for Email */\nexport type EmailAddress = Email;\n\n/** Union type of all sensitive attribute types */\nexport type SensitiveAttributeType =\n\t| FullName\n\t| FirstName\n\t| LastName\n\t| MiddleName\n\t| DateOfBirth\n\t| Address\n\t| Email\n\t| PhoneNumber\n\t| DateAndPlaceOfBirth\n\t| JobTitle\n\t| JobResponsibility\n\t| Id\n\t| Issuer\n\t| EntityType\n\t| ContactDetails\n\t| Nationality\n\t| Document\n\t| DocumentDriversLicense\n\t| DocumentIdCard\n\t| DocumentPassport\n\t| DocumentPassportCard\n\t| DocumentPermit\n\t| DocumentVisa\n\t| DocumentResidenceDocument;\n\n/** Map of attribute name to acceptable input type for CertificateBuilder.setAttribute */\nexport interface CertificateAttributeValueMap {\n\t'fullName': FullName;\n\t'firstName': FirstName;\n\t'lastName': LastName;\n\t'middleName': MiddleName;\n\t'dateOfBirth': DateOfBirth;\n\t'address': Address;\n\t'email': Email;\n\t'phoneNumber': PhoneNumber;\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirth;\n\t'jobTitle': JobTitle;\n\t'jobResponsibility': JobResponsibility;\n\t'id': Id;\n\t'issuer': Issuer;\n\t'entityType': EntityType;\n\t'contactDetails': ContactDetails;\n\t'nationality': Nationality;\n\t'document': Document;\n\t'documentDriversLicense': DocumentDriversLicense;\n\t'documentIdCard': DocumentIdCard;\n\t'documentPassport': DocumentPassport;\n\t'documentPassportCard': DocumentPassportCard;\n\t'documentPermit': DocumentPermit;\n\t'documentVisa': DocumentVisa;\n\t'documentResidenceDocument': DocumentResidenceDocument;\n}\n\n/** Helper generic to get attribute value type by name */\nexport type CertificateAttributeValue<Name extends keyof CertificateAttributeValueMap> = CertificateAttributeValueMap[Name];\n\nexport const AddressFields = ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'] as const;\nexport const AddressSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'],\n\tcontains: {\n\t\taddressLines: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: { type: 'string', kind: 'utf8' } } } },\n\t\taddressType: { optional: AddressTypeSchema },\n\t\tbuildingNumber: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },\n\t\tcountry: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },\n\t\tcountrySubDivision: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },\n\t\tdepartment: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },\n\t\tpostalCode: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },\n\t\tstreetName: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },\n\t\tsubDepartment: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },\n\t\ttownName: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { type: 'string', kind: 'utf8' } } }\n\t}\n};\nexport const DateAndPlaceOfBirthFields = ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'] as const;\nexport const DateAndPlaceOfBirthSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'],\n\tcontains: {\n\t\tbirthDate: { type: 'context', kind: 'explicit', value: 0, contains: ASN1.ValidateASN1.IsDate },\n\t\tcityOfBirth: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },\n\t\tcountryOfBirth: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } },\n\t\tprovinceOfBirth: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } }\n\t}\n};\nexport const EntityTypeFields = ['organization', 'person'] as const;\nexport const EntityTypeSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['organization', 'person'],\n\tcontains: {\n\t\torganization: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: GenericOrganizationIdentificationSchema } } },\n\t\tperson: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { sequenceOf: GenericPersonIdentificationSchema } } }\n\t}\n};\nexport const ContactDetailsFields = ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'] as const;\nexport const ContactDetailsSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'],\n\tcontains: {\n\t\tdepartment: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } } },\n\t\temailAddress: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },\n\t\temailPurpose: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },\n\t\tfaxNumber: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },\n\t\tfullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },\n\t\tjobResponsibility: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },\n\t\tjobTitle: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },\n\t\tmobileNumber: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },\n\t\tnamePrefix: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },\n\t\tother: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { sequenceOf: OtherContactSchema } } },\n\t\tphoneNumber: { optional: { type: 'context', kind: 'explicit', value: 10, contains: { type: 'string', kind: 'utf8' } } },\n\t\tpreferredMethod: { optional: { type: 'context', kind: 'explicit', value: 11, contains: { type: 'string', kind: 'utf8' } } }\n\t}\n};\nexport const DocumentFields = ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'] as const;\nexport const DocumentSchema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'],\n\tcontains: {\n\t\tdocumentNumber: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },\n\t\tfront: { optional: { type: 'context', kind: 'explicit', value: 1, contains: ReferenceSchema } },\n\t\tback: { optional: { type: 'context', kind: 'explicit', value: 2, contains: ReferenceSchema } },\n\t\tselfie: { optional: { type: 'context', kind: 'explicit', value: 3, contains: ReferenceSchema } },\n\t\tfullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },\n\t\tfirstName: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },\n\t\tlastName: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },\n\t\tdob: { optional: { type: 'context', kind: 'explicit', value: 7, contains: ASN1.ValidateASN1.IsDate } },\n\t\tgender: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },\n\t\taddress: { optional: { type: 'context', kind: 'explicit', value: 9, contains: AddressSchema } },\n\t\texpiresAt: { optional: { type: 'context', kind: 'explicit', value: 10, contains: ASN1.ValidateASN1.IsDate } },\n\t\tissuedAt: { optional: { type: 'context', kind: 'explicit', value: 11, contains: ASN1.ValidateASN1.IsDate } },\n\t\tissuingState: { optional: { type: 'context', kind: 'explicit', value: 12, contains: { type: 'string', kind: 'utf8' } } },\n\t\tissuingCountry: { optional: { type: 'context', kind: 'explicit', value: 13, contains: { type: 'string', kind: 'utf8' } } },\n\t\trefNumber: { optional: { type: 'context', kind: 'explicit', value: 14, contains: { type: 'string', kind: 'utf8' } } },\n\t\tnationality: { optional: { type: 'context', kind: 'explicit', value: 15, contains: { type: 'string', kind: 'utf8' } } },\n\t\tcurp: { optional: { type: 'context', kind: 'explicit', value: 16, contains: { type: 'string', kind: 'utf8' } } },\n\t\tclaveDeElector: { optional: { type: 'context', kind: 'explicit', value: 17, contains: { type: 'string', kind: 'utf8' } } },\n\t\tclassifiedDocumentType: { optional: { type: 'context', kind: 'explicit', value: 18, contains: { type: 'string', kind: 'utf8' } } },\n\t\tcurpValidationResponse: { optional: { type: 'context', kind: 'explicit', value: 19, contains: { type: 'string', kind: 'utf8' } } },\n\t\tsambaActivityHistoryResponse: { optional: { type: 'context', kind: 'explicit', value: 20, contains: { type: 'string', kind: 'utf8' } } }\n\t}\n};\nexport const CertificateAttributeOIDDB = {\n\t'fullName': '1.3.6.1.4.1.62675.1.0',\n\t'firstName': '1.3.6.1.4.1.62675.1.0.1',\n\t'lastName': '1.3.6.1.4.1.62675.1.0.2',\n\t'middleName': '1.3.6.1.4.1.62675.1.0.3',\n\t'dateOfBirth': '1.3.6.1.4.1.62675.1.1',\n\t'address': '1.3.6.1.4.1.62675.1.2',\n\t'email': '1.3.6.1.4.1.62675.1.3',\n\t'phoneNumber': '1.3.6.1.4.1.62675.1.4',\n\t'dateAndPlaceOfBirth': '1.3.6.1.4.1.62675.1.5',\n\t'jobTitle': '1.3.6.1.4.1.62675.1.6',\n\t'jobResponsibility': '1.3.6.1.4.1.62675.1.6.1',\n\t'id': '1.3.6.1.4.1.62675.1.7',\n\t'issuer': '1.3.6.1.4.1.62675.1.7.1',\n\t'entityType': '1.3.6.1.4.1.62675.1.8',\n\t'contactDetails': '1.3.6.1.4.1.62675.1.9',\n\t'nationality': '1.3.6.1.4.1.62675.1.10',\n\t'document': '1.3.6.1.4.1.62675.1.11',\n\t'documentDriversLicense': '1.3.6.1.4.1.62675.1.11.0',\n\t'documentIdCard': '1.3.6.1.4.1.62675.1.11.1',\n\t'documentPassport': '1.3.6.1.4.1.62675.1.11.2',\n\t'documentPassportCard': '1.3.6.1.4.1.62675.1.11.3',\n\t'documentPermit': '1.3.6.1.4.1.62675.1.11.4',\n\t'documentVisa': '1.3.6.1.4.1.62675.1.11.5',\n\t'documentResidenceDocument': '1.3.6.1.4.1.62675.1.11.6'\n} as const;\n\nexport const SENSITIVE_CERTIFICATE_ATTRIBUTES = [\n\t'fullName',\n\t'firstName',\n\t'lastName',\n\t'middleName',\n\t'dateOfBirth',\n\t'address',\n\t'email',\n\t'phoneNumber',\n\t'dateAndPlaceOfBirth',\n\t'jobTitle',\n\t'jobResponsibility',\n\t'id',\n\t'issuer',\n\t'entityType',\n\t'contactDetails',\n\t'nationality',\n\t'document',\n\t'documentDriversLicense',\n\t'documentIdCard',\n\t'documentPassport',\n\t'documentPassportCard',\n\t'documentPermit',\n\t'documentVisa',\n\t'documentResidenceDocument'\n] as const;\n\nexport type SensitiveCertificateAttributeNames = typeof SENSITIVE_CERTIFICATE_ATTRIBUTES[number];\n\nexport const SensitiveCertificateAttributeNames = [\n\t'FullName',\n\t'FirstName',\n\t'LastName',\n\t'MiddleName',\n\t'DateOfBirth',\n\t'Address',\n\t'Email',\n\t'PhoneNumber',\n\t'DateAndPlaceOfBirth',\n\t'JobTitle',\n\t'JobResponsibility',\n\t'Id',\n\t'Issuer',\n\t'EntityType',\n\t'ContactDetails',\n\t'Nationality',\n\t'Document',\n\t'DocumentDriversLicense',\n\t'DocumentIdCard',\n\t'DocumentPassport',\n\t'DocumentPassportCard',\n\t'DocumentPermit',\n\t'DocumentVisa',\n\t'DocumentResidenceDocument'\n] as const;\n\nexport const CertificateAttributeFieldNames: { readonly [K in keyof typeof CertificateAttributeOIDDB]?: readonly string[] } = {\n\t'address': AddressFields,\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirthFields,\n\t'entityType': EntityTypeFields,\n\t'contactDetails': ContactDetailsFields,\n\t'document': DocumentFields\n} as const;\n\nexport const CertificateAttributeSchema: { readonly [K in keyof typeof CertificateAttributeOIDDB]: ASN1.Schema } = {\n\t'fullName': { type: 'string', kind: 'utf8' },\n\t'firstName': { type: 'string', kind: 'utf8' },\n\t'lastName': { type: 'string', kind: 'utf8' },\n\t'middleName': { type: 'string', kind: 'utf8' },\n\t'dateOfBirth': ASN1.ValidateASN1.IsDate,\n\t'address': AddressSchema,\n\t'email': { type: 'string', kind: 'utf8' },\n\t'phoneNumber': { type: 'string', kind: 'utf8' },\n\t'dateAndPlaceOfBirth': DateAndPlaceOfBirthSchema,\n\t'jobTitle': { type: 'string', kind: 'utf8' },\n\t'jobResponsibility': { type: 'string', kind: 'utf8' },\n\t'id': { type: 'string', kind: 'utf8' },\n\t'issuer': { type: 'string', kind: 'utf8' },\n\t'entityType': EntityTypeSchema,\n\t'contactDetails': ContactDetailsSchema,\n\t'nationality': { type: 'string', kind: 'utf8' },\n\t'document': DocumentSchema,\n\t'documentDriversLicense': DocumentSchema,\n\t'documentIdCard': DocumentSchema,\n\t'documentPassport': DocumentSchema,\n\t'documentPassportCard': DocumentSchema,\n\t'documentPermit': DocumentSchema,\n\t'documentVisa': DocumentSchema,\n\t'documentResidenceDocument': DocumentSchema\n} as const;\n"]}
@@ -1,6 +1,6 @@
1
1
  import KeetaNet from '@keetanetwork/keetanet-client';
2
2
  import * as CurrencyInfo from '@keetanetwork/currency-info';
3
- import * as KeetaAnchorHTTPServer from '../../lib/http-server.js';
3
+ import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
4
4
  import type { KeetaKYCAnchorCreateVerificationRequest, KeetaKYCAnchorCreateVerificationResponse, KeetaKYCAnchorGetCertificateResponse } from './common.ts';
5
5
  import type * as Signing from '../../lib/utils/signing.js';
6
6
  import type { ServiceMetadata } from '../../lib/resolver.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/kyc/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/kyc/server.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import KeetaNet from '@keetanetwork/keetanet-client';
2
2
  import * as CurrencyInfo from '@keetanetwork/currency-info';
3
- import * as KeetaAnchorHTTPServer from '../../lib/http-server.js';
3
+ import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
4
4
  import { KeetaAnchorUserError } from '../../lib/error.js';
5
5
  import { assertCreateVerificationRequest, assertCreateVerificationResponse } from './common.generated.js';
6
6
  import { verifySignedData } from './common.js';
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/kyc/server.ts"],"names":[],"mappings":"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","sourcesContent":["import KeetaNet from '@keetanetwork/keetanet-client';\nimport * as CurrencyInfo from '@keetanetwork/currency-info';\n\nimport * as KeetaAnchorHTTPServer from '../../lib/http-server.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaKYCAnchorCreateVerificationRequest,\n\tKeetaKYCAnchorCreateVerificationResponse,\n\tKeetaKYCAnchorGetCertificateResponse\n} from './common.ts';\nimport {\n\tassertCreateVerificationRequest,\n\tassertCreateVerificationResponse\n} from './common.generated.js';\nimport {\n\tverifySignedData\n} from './common.js';\nimport type * as Signing from '../../lib/utils/signing.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\n\nconst kycProviderURLUndefined = 'NO_KYC_PROVIDER_URL:87f0175c-4d0a-4029-a4f3-ba93ef725654';\n\n/**\n * The Base certificate type, from the KeetaNet Client\n *\n * The KYC Certificate type is a subclass of this, so it will also work\n */\ntype BaseCertificate = InstanceType<typeof KeetaNet.lib.Utils.Certificate.Certificate>;\n\nexport interface KeetaAnchorKYCServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * The network client to use for submitting blocks\n\t */\n\tclient: { client: KeetaNet.Client; network: bigint; networkAlias: typeof KeetaNet.Client.Config.networksArray[number] } | KeetaNet.UserClient;\n\n\t/**\n\t * Configuration for the KYC Anchor\n\t *\n\t * The flow for a KYC Anchor is as follows:\n\t * 1. Client requests a new verification with a country code and\n\t * account from the KYC Anchor Server\n\t * 2. KYC Anchor Server responds with a verification ID and a URL\n\t * to the KYC provider's web URL, including the verification ID\n\t * 3. Client visits the KYC provider's web URL to complete the\n\t * verification\n\t * 4. KYC provider notifies the Anchor server that the\n\t * verification is complete\n\t * 5. Client requests the certificate for the verification ID\n\t * (polling) from the KYC Anchor Server\n\t * 6. KYC Anchor Server responds with the certificate(s) for the\n\t * verification ID (if complete, pending if still in progress,\n\t * an error if failed)\n\t * 7. Client installs the certificate(s) in their wallet using\n\t * the KeetaNet Client library\n\t *\n\t *\n\t * +-------------------+ +---------------------+ +------------------+\n\t * | Client | | KYC Anchor Server | | KYC Provider |\n\t * +-------------------+ +---------------------+ +------------------+\n\t * | | |\n\t * (1) Create Verification | |\n\t * countryCode, account ---------------------->| |\n\t * | | |\n\t * | (2) Create verification |\n\t * |----------------------------------- verificationID, providerURL |\n\t * | | |\n\t * (3) Open providerURL (with verificationID)------------------------------------>|\n\t * | | |\n\t * | | (4) Notify\n\t * | |<-------- verificationID, verificationStatus, certificates?\n\t * | |\n\t * (5) Poll certificate for verificationID --->|\n\t * | |\n\t * |<-------------------------- (6) Pending / Certificate(s) / Error\n\t * | (repeat #5 until complete)\n\t * |\n\t * (7) Install certificate(s) in wallet using KeetaNet Client library\n\t */\n\tkyc: {\n\t\t/**\n\t\t * Notification that a verification has been started (optional)\n\t\t *\n\t\t * This method can be used to notify the KYC provider that\n\t\t * a verification has been started. It can return additional\n\t\t * information about the verification, such as the web URL\n\t\t * where the user can complete the verification.\n\t\t *\n\t\t * If this method is not provided, the server will generate\n\t\t * a random verification ID and use the `kycProviderURL` from\n\t\t * the server configuration, replacing `{id}` with the\n\t\t * verification ID.\n\t\t */\n\t\tverificationStarted?: (request: KeetaKYCAnchorCreateVerificationRequest) => Promise<Partial<KeetaKYCAnchorCreateVerificationResponse> | undefined>;\n\n\t\t/**\n\t\t * Retrieve the certificate for a verification\n\t\t *\n\t\t * This should return the certificate(s) for the\n\t\t * verification ID. If the verification is still\n\t\t * in progress, it should throw an `CertificateNotFound`\n\t\t * error.\n\t\t * If the verification has failed permanently, it should\n\t\t * throw a `KeetaAnchorUserError` with an appropriate\n\t\t * error message or `VerificationNotFound` if the\n\t\t * verification ID is not found.\n\t\t */\n\t\tgetCertificates: (verificationID: string) => Promise<Extract<KeetaKYCAnchorGetCertificateResponse, { ok: true; }>['results']>;\n\n\t\t/**\n\t\t * Country codes that this KYC provider can service (default is all country codes)\n\t\t */\n\t\tcountryCodes?: (CurrencyInfo.Country | CurrencyInfo.ISOCountryCode)[];\n\t}\n\n\t/**\n\t * The certificate to use for signing certificates\n\t */\n\tca: BaseCertificate;\n\n\t/**\n\t * The account to use for signing certificates\n\t */\n\tsigner: Signing.SignableAccount;\n\n\t/**\n\t * URL for the KYC Provider (optional)\n\t *\n\t * This is the URL that clients will be directed to in order to\n\t * complete the KYC verification process. It is optional because\n\t * the `kyc.verificationStarted` method can also return a `webURL`.\n\t * If both are provided, the URL from `kyc.verificationStarted` takes\n\t * precedence.\n\t */\n\tkycProviderURL?: string | ((verificationID: string) => string);\n\n\t/**\n\t * Additional routes to add to the server (optional)\n\t */\n\troutes?: KeetaAnchorHTTPServer.Routes;\n};\n\nexport class KeetaNetKYCAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorKYCServerConfig> implements Required<KeetaAnchorKYCServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorKYCServerConfig['homepage']>;\n\treadonly client: KeetaAnchorKYCServerConfig['client'];\n\treadonly signer: NonNullable<KeetaAnchorKYCServerConfig['signer']>;\n\treadonly ca: KeetaAnchorKYCServerConfig['ca'];\n\treadonly kyc: KeetaAnchorKYCServerConfig['kyc'];\n\treadonly kycProviderURL: NonNullable<KeetaAnchorKYCServerConfig['kycProviderURL']>;\n\treadonly routes: NonNullable<KeetaAnchorKYCServerConfig['routes']>;\n\treadonly #countryCodes?: CurrencyInfo.Country[] | undefined;\n\n\tconstructor(config: KeetaAnchorKYCServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.client = config.client;\n\t\tthis.signer = config.signer;\n\t\tthis.ca = config.ca;\n\t\tthis.kyc = config.kyc;\n\t\tthis.routes = config.routes ?? {};\n\t\tthis.kycProviderURL = config.kycProviderURL ?? kycProviderURLUndefined;\n\n\t\tif (config.kyc.countryCodes) {\n\t\t\tthis.#countryCodes = config.kyc.countryCodes.map(function(inputCode) {\n\t\t\t\tif (CurrencyInfo.Country.isCountryCode(inputCode)) {\n\t\t\t\t\treturn(new CurrencyInfo.Country(inputCode));\n\t\t\t\t}\n\n\t\t\t\treturn(inputCode);\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorKYCServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Begin the KYC verification process\n\t\t * with this KYC provider\n\t\t */\n\t\troutes['POST /api/createVerification'] = async function(_ignore_params, bodyInput) {\n\t\t\tif (bodyInput === null || typeof bodyInput !== 'object' || !('request' in bodyInput)) {\n\t\t\t\tthrow(new KeetaAnchorUserError('Invalid request'));\n\t\t\t}\n\n\t\t\tconst body = assertCreateVerificationRequest(bodyInput.request);\n\t\t\tconst valid = await verifySignedData(body);\n\t\t\tif (!valid) {\n\t\t\t\tthrow(new KeetaAnchorUserError('Invalid signature'));\n\t\t\t}\n\n\t\t\t/* XXX:TODO: Validate that the nonce is unique (within a reasonable time frame) */\n\n\t\t\tlet response: Partial<KeetaKYCAnchorCreateVerificationResponse> | undefined = {};\n\t\t\tif (config.kyc.verificationStarted) {\n\t\t\t\tresponse = await config.kyc.verificationStarted(body);\n\t\t\t}\n\n\t\t\tresponse ??= {};\n\n\t\t\tif (response?.ok === false) {\n\t\t\t\tthrow(new KeetaAnchorUserError(response.error ?? 'Unknown error'));\n\t\t\t}\n\n\t\t\tresponse.ok = true;\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow(new Error('internal error: invalid response'));\n\t\t\t}\n\t\t\tresponse.id ??= crypto.randomUUID();\n\n\t\t\tlet defaultWebURL: string;\n\t\t\tif (typeof config.kycProviderURL === 'string') {\n\t\t\t\tdefaultWebURL = config.kycProviderURL.replace('{id}', encodeURIComponent(response.id));\n\t\t\t} else if (config.kycProviderURL !== undefined) {\n\t\t\t\tdefaultWebURL = config.kycProviderURL(response.id);\n\t\t\t} else {\n\t\t\t\tdefaultWebURL = kycProviderURLUndefined;\n\t\t\t}\n\t\t\tresponse.webURL ??= defaultWebURL;\n\n\t\t\tif (!response.webURL || response.webURL === kycProviderURLUndefined) {\n\t\t\t\tthrow(new KeetaAnchorUserError('No webURL provided -- cannot proceed with verification'));\n\t\t\t}\n\n\t\t\tresponse.expectedCost = {\n\t\t\t\tmin: '0',\n\t\t\t\tmax: '0',\n\t\t\t\ttoken: KeetaNet.lib.Account.generateBaseAddresses(config.client.network).baseToken.publicKeyString.get(),\n\t\t\t\t...response.expectedCost\n\t\t\t};\n\n\t\t\tconst responseValidated = assertCreateVerificationResponse(response);\n\n\t\t\treturn({\n\t\t\t\toutput: JSON.stringify(responseValidated)\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Request an estimate for a KYC\n\t\t * verification (optional)\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['POST /api/createEstimate'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\t/**\n\t\t * Get the certificate for the\n\t\t * KYC verification\n\t\t */\n\t\troutes['GET /api/getCertificates/:verificationID'] = async function(params) {\n\t\t\tconst verificationID = params.get('verificationID');\n\t\t\tif (verificationID === undefined) {\n\t\t\t\tthrow(new KeetaAnchorUserError('No verification ID provided'));\n\t\t\t}\n\n\t\t\tconst certificates = await config.kyc.getCertificates(verificationID);\n\n\t\t\tconst response: KeetaKYCAnchorGetCertificateResponse = {\n\t\t\t\tok: true,\n\t\t\t\tresults: certificates\n\t\t\t};\n\n\t\t\treturn({\n\t\t\t\toutput: JSON.stringify(response)\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Check if the KYC provider can\n\t\t * service a more specific locality\n\t\t * (optional)\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['GET /api/checkLocality'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\t/**\n\t\t * Notification that payment has been received for the KYC verification\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['POST /api/notifyPayment/:verificationID'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\treturn({\n\t\t\t...config.routes,\n\t\t\t...routes\n\t\t});\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['kyc']>[string]> {\n\t\treturn({\n\t\t\tca: this.ca.toPEM(),\n\t\t\tcountryCodes: this.#countryCodes?.map(function(country) {\n\t\t\t\treturn(country.code);\n\t\t\t}) ?? [],\n\t\t\toperations: {\n\t\t\t\t// checkLocality: (new URL('/api/checkLocality', this.url)).toString(),\n\t\t\t\t// getEstimate: (new URL('/api/createEstimate', this.url)).toString(),\n\t\t\t\t// notifyPayment: (new URL('/api/notifyPayment/{id}', this.url)).toString(),\n\t\t\t\tcreateVerification: (new URL('/api/createVerification', this.url)).toString(),\n\t\t\t\tgetCertificates: (new URL('/api/getCertificates', this.url)).toString() + '/{id}'\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/kyc/server.ts"],"names":[],"mappings":"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","sourcesContent":["import KeetaNet from '@keetanetwork/keetanet-client';\nimport * as CurrencyInfo from '@keetanetwork/currency-info';\n\nimport * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaKYCAnchorCreateVerificationRequest,\n\tKeetaKYCAnchorCreateVerificationResponse,\n\tKeetaKYCAnchorGetCertificateResponse\n} from './common.ts';\nimport {\n\tassertCreateVerificationRequest,\n\tassertCreateVerificationResponse\n} from './common.generated.js';\nimport {\n\tverifySignedData\n} from './common.js';\nimport type * as Signing from '../../lib/utils/signing.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\n\nconst kycProviderURLUndefined = 'NO_KYC_PROVIDER_URL:87f0175c-4d0a-4029-a4f3-ba93ef725654';\n\n/**\n * The Base certificate type, from the KeetaNet Client\n *\n * The KYC Certificate type is a subclass of this, so it will also work\n */\ntype BaseCertificate = InstanceType<typeof KeetaNet.lib.Utils.Certificate.Certificate>;\n\nexport interface KeetaAnchorKYCServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * The network client to use for submitting blocks\n\t */\n\tclient: { client: KeetaNet.Client; network: bigint; networkAlias: typeof KeetaNet.Client.Config.networksArray[number] } | KeetaNet.UserClient;\n\n\t/**\n\t * Configuration for the KYC Anchor\n\t *\n\t * The flow for a KYC Anchor is as follows:\n\t * 1. Client requests a new verification with a country code and\n\t * account from the KYC Anchor Server\n\t * 2. KYC Anchor Server responds with a verification ID and a URL\n\t * to the KYC provider's web URL, including the verification ID\n\t * 3. Client visits the KYC provider's web URL to complete the\n\t * verification\n\t * 4. KYC provider notifies the Anchor server that the\n\t * verification is complete\n\t * 5. Client requests the certificate for the verification ID\n\t * (polling) from the KYC Anchor Server\n\t * 6. KYC Anchor Server responds with the certificate(s) for the\n\t * verification ID (if complete, pending if still in progress,\n\t * an error if failed)\n\t * 7. Client installs the certificate(s) in their wallet using\n\t * the KeetaNet Client library\n\t *\n\t *\n\t * +-------------------+ +---------------------+ +------------------+\n\t * | Client | | KYC Anchor Server | | KYC Provider |\n\t * +-------------------+ +---------------------+ +------------------+\n\t * | | |\n\t * (1) Create Verification | |\n\t * countryCode, account ---------------------->| |\n\t * | | |\n\t * | (2) Create verification |\n\t * |----------------------------------- verificationID, providerURL |\n\t * | | |\n\t * (3) Open providerURL (with verificationID)------------------------------------>|\n\t * | | |\n\t * | | (4) Notify\n\t * | |<-------- verificationID, verificationStatus, certificates?\n\t * | |\n\t * (5) Poll certificate for verificationID --->|\n\t * | |\n\t * |<-------------------------- (6) Pending / Certificate(s) / Error\n\t * | (repeat #5 until complete)\n\t * |\n\t * (7) Install certificate(s) in wallet using KeetaNet Client library\n\t */\n\tkyc: {\n\t\t/**\n\t\t * Notification that a verification has been started (optional)\n\t\t *\n\t\t * This method can be used to notify the KYC provider that\n\t\t * a verification has been started. It can return additional\n\t\t * information about the verification, such as the web URL\n\t\t * where the user can complete the verification.\n\t\t *\n\t\t * If this method is not provided, the server will generate\n\t\t * a random verification ID and use the `kycProviderURL` from\n\t\t * the server configuration, replacing `{id}` with the\n\t\t * verification ID.\n\t\t */\n\t\tverificationStarted?: (request: KeetaKYCAnchorCreateVerificationRequest) => Promise<Partial<KeetaKYCAnchorCreateVerificationResponse> | undefined>;\n\n\t\t/**\n\t\t * Retrieve the certificate for a verification\n\t\t *\n\t\t * This should return the certificate(s) for the\n\t\t * verification ID. If the verification is still\n\t\t * in progress, it should throw an `CertificateNotFound`\n\t\t * error.\n\t\t * If the verification has failed permanently, it should\n\t\t * throw a `KeetaAnchorUserError` with an appropriate\n\t\t * error message or `VerificationNotFound` if the\n\t\t * verification ID is not found.\n\t\t */\n\t\tgetCertificates: (verificationID: string) => Promise<Extract<KeetaKYCAnchorGetCertificateResponse, { ok: true; }>['results']>;\n\n\t\t/**\n\t\t * Country codes that this KYC provider can service (default is all country codes)\n\t\t */\n\t\tcountryCodes?: (CurrencyInfo.Country | CurrencyInfo.ISOCountryCode)[];\n\t}\n\n\t/**\n\t * The certificate to use for signing certificates\n\t */\n\tca: BaseCertificate;\n\n\t/**\n\t * The account to use for signing certificates\n\t */\n\tsigner: Signing.SignableAccount;\n\n\t/**\n\t * URL for the KYC Provider (optional)\n\t *\n\t * This is the URL that clients will be directed to in order to\n\t * complete the KYC verification process. It is optional because\n\t * the `kyc.verificationStarted` method can also return a `webURL`.\n\t * If both are provided, the URL from `kyc.verificationStarted` takes\n\t * precedence.\n\t */\n\tkycProviderURL?: string | ((verificationID: string) => string);\n\n\t/**\n\t * Additional routes to add to the server (optional)\n\t */\n\troutes?: KeetaAnchorHTTPServer.Routes;\n};\n\nexport class KeetaNetKYCAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorKYCServerConfig> implements Required<KeetaAnchorKYCServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorKYCServerConfig['homepage']>;\n\treadonly client: KeetaAnchorKYCServerConfig['client'];\n\treadonly signer: NonNullable<KeetaAnchorKYCServerConfig['signer']>;\n\treadonly ca: KeetaAnchorKYCServerConfig['ca'];\n\treadonly kyc: KeetaAnchorKYCServerConfig['kyc'];\n\treadonly kycProviderURL: NonNullable<KeetaAnchorKYCServerConfig['kycProviderURL']>;\n\treadonly routes: NonNullable<KeetaAnchorKYCServerConfig['routes']>;\n\treadonly #countryCodes?: CurrencyInfo.Country[] | undefined;\n\n\tconstructor(config: KeetaAnchorKYCServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.client = config.client;\n\t\tthis.signer = config.signer;\n\t\tthis.ca = config.ca;\n\t\tthis.kyc = config.kyc;\n\t\tthis.routes = config.routes ?? {};\n\t\tthis.kycProviderURL = config.kycProviderURL ?? kycProviderURLUndefined;\n\n\t\tif (config.kyc.countryCodes) {\n\t\t\tthis.#countryCodes = config.kyc.countryCodes.map(function(inputCode) {\n\t\t\t\tif (CurrencyInfo.Country.isCountryCode(inputCode)) {\n\t\t\t\t\treturn(new CurrencyInfo.Country(inputCode));\n\t\t\t\t}\n\n\t\t\t\treturn(inputCode);\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorKYCServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Begin the KYC verification process\n\t\t * with this KYC provider\n\t\t */\n\t\troutes['POST /api/createVerification'] = async function(_ignore_params, bodyInput) {\n\t\t\tif (bodyInput === null || typeof bodyInput !== 'object' || !('request' in bodyInput)) {\n\t\t\t\tthrow(new KeetaAnchorUserError('Invalid request'));\n\t\t\t}\n\n\t\t\tconst body = assertCreateVerificationRequest(bodyInput.request);\n\t\t\tconst valid = await verifySignedData(body);\n\t\t\tif (!valid) {\n\t\t\t\tthrow(new KeetaAnchorUserError('Invalid signature'));\n\t\t\t}\n\n\t\t\t/* XXX:TODO: Validate that the nonce is unique (within a reasonable time frame) */\n\n\t\t\tlet response: Partial<KeetaKYCAnchorCreateVerificationResponse> | undefined = {};\n\t\t\tif (config.kyc.verificationStarted) {\n\t\t\t\tresponse = await config.kyc.verificationStarted(body);\n\t\t\t}\n\n\t\t\tresponse ??= {};\n\n\t\t\tif (response?.ok === false) {\n\t\t\t\tthrow(new KeetaAnchorUserError(response.error ?? 'Unknown error'));\n\t\t\t}\n\n\t\t\tresponse.ok = true;\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow(new Error('internal error: invalid response'));\n\t\t\t}\n\t\t\tresponse.id ??= crypto.randomUUID();\n\n\t\t\tlet defaultWebURL: string;\n\t\t\tif (typeof config.kycProviderURL === 'string') {\n\t\t\t\tdefaultWebURL = config.kycProviderURL.replace('{id}', encodeURIComponent(response.id));\n\t\t\t} else if (config.kycProviderURL !== undefined) {\n\t\t\t\tdefaultWebURL = config.kycProviderURL(response.id);\n\t\t\t} else {\n\t\t\t\tdefaultWebURL = kycProviderURLUndefined;\n\t\t\t}\n\t\t\tresponse.webURL ??= defaultWebURL;\n\n\t\t\tif (!response.webURL || response.webURL === kycProviderURLUndefined) {\n\t\t\t\tthrow(new KeetaAnchorUserError('No webURL provided -- cannot proceed with verification'));\n\t\t\t}\n\n\t\t\tresponse.expectedCost = {\n\t\t\t\tmin: '0',\n\t\t\t\tmax: '0',\n\t\t\t\ttoken: KeetaNet.lib.Account.generateBaseAddresses(config.client.network).baseToken.publicKeyString.get(),\n\t\t\t\t...response.expectedCost\n\t\t\t};\n\n\t\t\tconst responseValidated = assertCreateVerificationResponse(response);\n\n\t\t\treturn({\n\t\t\t\toutput: JSON.stringify(responseValidated)\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Request an estimate for a KYC\n\t\t * verification (optional)\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['POST /api/createEstimate'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\t/**\n\t\t * Get the certificate for the\n\t\t * KYC verification\n\t\t */\n\t\troutes['GET /api/getCertificates/:verificationID'] = async function(params) {\n\t\t\tconst verificationID = params.get('verificationID');\n\t\t\tif (verificationID === undefined) {\n\t\t\t\tthrow(new KeetaAnchorUserError('No verification ID provided'));\n\t\t\t}\n\n\t\t\tconst certificates = await config.kyc.getCertificates(verificationID);\n\n\t\t\tconst response: KeetaKYCAnchorGetCertificateResponse = {\n\t\t\t\tok: true,\n\t\t\t\tresults: certificates\n\t\t\t};\n\n\t\t\treturn({\n\t\t\t\toutput: JSON.stringify(response)\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Check if the KYC provider can\n\t\t * service a more specific locality\n\t\t * (optional)\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['GET /api/checkLocality'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\t/**\n\t\t * Notification that payment has been received for the KYC verification\n\t\t *\n\t\t * XXX:TODO\n\t\t */\n\t\t// if (false) {\n\t\t// \troutes['POST /api/notifyPayment/:verificationID'] = async function(_ignore_params, _ignore_body) {\n\t\t// \t\tthrow(new Error('not implemented'));\n\t\t// \t};\n\t\t// }\n\n\t\treturn({\n\t\t\t...config.routes,\n\t\t\t...routes\n\t\t});\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['kyc']>[string]> {\n\t\treturn({\n\t\t\tca: this.ca.toPEM(),\n\t\t\tcountryCodes: this.#countryCodes?.map(function(country) {\n\t\t\t\treturn(country.code);\n\t\t\t}) ?? [],\n\t\t\toperations: {\n\t\t\t\t// checkLocality: (new URL('/api/checkLocality', this.url)).toString(),\n\t\t\t\t// getEstimate: (new URL('/api/createEstimate', this.url)).toString(),\n\t\t\t\t// notifyPayment: (new URL('/api/notifyPayment/{id}', this.url)).toString(),\n\t\t\t\tcreateVerification: (new URL('/api/createVerification', this.url)).toString(),\n\t\t\t\tgetCertificates: (new URL('/api/getCertificates', this.url)).toString() + '/{id}'\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
@@ -285,6 +285,7 @@ function genSequenceSchema(typeName, fields, config) {
285
285
  // Resolve to base type to handle aliases
286
286
  const baseType = resolveToBaseType(fcfg.type);
287
287
  let fieldSchema;
288
+ let isChoiceType = false;
288
289
  // Check if field type is GeneralizedTime (date)
289
290
  if (baseType === 'GeneralizedTime') {
290
291
  fieldSchema = 'ASN1.ValidateASN1.IsDate';
@@ -306,6 +307,7 @@ function genSequenceSchema(typeName, fields, config) {
306
307
  const isSensitiveChoice = oidSchema.sensitive_attributes[fieldTypeSnake]?.choices;
307
308
  const isExtension = oidSchema.extensions[fieldTypeSnake]?.fields ?? oidSchema.extensions[fieldType]?.fields;
308
309
  const hasSchema = isChoice ?? isSequence ?? isSensitiveSequence ?? isSensitiveChoice ?? isExtension;
310
+ isChoiceType = !!(isChoice ?? isSensitiveChoice);
309
311
  if (hasSchema) {
310
312
  fieldSchema = `${fieldTypePascal}Schema`;
311
313
  }
@@ -326,15 +328,41 @@ function genSequenceSchema(typeName, fields, config) {
326
328
  fieldSchema = `{ sequenceOf: ${fieldSchema} }`;
327
329
  }
328
330
  }
329
- if (fcfg.optional) {
330
- structFields[fname] = `{ optional: ${fieldSchema} }`;
331
+ // Store field metadata
332
+ structFields[fname] = {
333
+ schema: fieldSchema,
334
+ optional: fcfg.optional ?? false,
335
+ isChoice: isChoiceType
336
+ };
337
+ }
338
+ // Check if ANY field is optional - if so, ALL fields need context tags for proper ordering
339
+ const hasAnyOptionalField = fieldOrder.some(function (fname) {
340
+ const fieldInfo = structFields[fname];
341
+ return (fieldInfo?.optional ?? false);
342
+ });
343
+ const containsObject = fieldOrder.map(function (fname, index) {
344
+ const fieldInfo = structFields[fname];
345
+ if (!fieldInfo) {
346
+ throw (new Error(`Field ${fname} not found in structFields`));
347
+ }
348
+ const baseSchema = fieldInfo.schema;
349
+ const isOptional = fieldInfo.optional;
350
+ const isChoiceField = fieldInfo.isChoice;
351
+ if (hasAnyOptionalField && !isChoiceField) {
352
+ const wrappedInContext = `{ type: 'context', kind: 'explicit', value: ${index}, contains: ${baseSchema} }`;
353
+ if (isOptional) {
354
+ return (`\t\t${fname}: { optional: ${wrappedInContext} }`);
355
+ }
356
+ else {
357
+ return (`\t\t${fname}: ${wrappedInContext}`);
358
+ }
359
+ }
360
+ else if (isOptional) {
361
+ return (`\t\t${fname}: { optional: ${baseSchema} }`);
331
362
  }
332
363
  else {
333
- structFields[fname] = fieldSchema;
364
+ return (`\t\t${fname}: ${baseSchema}`);
334
365
  }
335
- }
336
- const containsObject = fieldOrder.map(function (fname) {
337
- return (`\t\t${fname}: ${structFields[fname]}`);
338
366
  }).join(',\n');
339
367
  return (`export const ${typeName}Schema: ASN1.Schema = {\n\ttype: 'struct',\n\tfieldNames: [${fieldOrder.map(f => `'${f}'`).join(', ')}],\n\tcontains: {\n${containsObject}\n\t}\n};`);
340
368
  }