/* eslint-disable */
/**
 * Generated ISO20022 Type Definitions
 * This file is auto-generated from oids.json.
 */
import * as ASN1 from '../../lib/utils/asn1.js';
// Generated ASN.1 schemas for ISO 20022 choice types
/** ASN.1 schema for AddressType */
export const AddressTypeSchema = {
    choice: [
        { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }
    ]
};
/** ASN.1 schema for OrganizationIdentificationSchemeNameChoice */
export const OrganizationIdentificationSchemeNameChoiceSchema = {
    choice: [
        { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }
    ]
};
/** ASN.1 schema for PersonIdentificationSchemeNameChoice */
export const PersonIdentificationSchemeNameChoiceSchema = {
    choice: [
        { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } }
    ]
};
// Generated ASN.1 schemas for ISO 20022 regular sequence types
/** ASN.1 schema for GenericOrganizationIdentification */
export const GenericOrganizationIdentificationSchema = {
    type: 'struct',
    fieldNames: ['id', 'issuer', 'schemeName'],
    contains: {
        id: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        issuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
        schemeName: { optional: OrganizationIdentificationSchemeNameChoiceSchema }
    }
};
/** ASN.1 schema for GenericPersonIdentification */
export const GenericPersonIdentificationSchema = {
    type: 'struct',
    fieldNames: ['id', 'issuer', 'schemeName'],
    contains: {
        id: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        issuer: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
        schemeName: { optional: PersonIdentificationSchemeNameChoiceSchema }
    }
};
/** ASN.1 schema for OtherContact */
export const OtherContactSchema = {
    type: 'struct',
    fieldNames: ['channelType', 'id'],
    contains: {
        channelType: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        id: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } }
    }
};
// Generated ASN.1 schemas for ISO 20022 sequence-of-choice types
/** ASN.1 schema for OrganizationIdentification */
export const OrganizationIdentificationSchema = {
    sequenceOf: {
        choice: [
            { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
            { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },
            { type: 'context', kind: 'explicit', value: 2, contains: GenericOrganizationIdentificationSchema }
        ]
    }
};
export const OrganizationIdentificationFields = [
    'bic',
    'lei',
    'other'
];
/** ASN.1 schema for PersonIdentification */
export const PersonIdentificationSchema = {
    sequenceOf: {
        choice: [
            { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
            { type: 'context', kind: 'explicit', value: 1, contains: GenericPersonIdentificationSchema }
        ]
    }
};
export const PersonIdentificationFields = [
    'dateAndPlaceOfBirth',
    'other'
];
export const DigestInfoSchema = {
    type: 'struct',
    fieldNames: ['digestAlgorithm', 'digest'],
    contains: {
        digestAlgorithm: ASN1.ValidateASN1.IsOID,
        digest: ASN1.ValidateASN1.IsOctetString
    }
};
export const ExternalReferenceSchema = {
    type: 'struct',
    fieldNames: ['url', 'contentType'],
    contains: {
        url: { type: 'string', kind: 'utf8' },
        contentType: { type: 'string', kind: 'utf8' }
    }
};
export const ReferenceSchema = {
    type: 'struct',
    fieldNames: ['external', 'digest', 'encryptionAlgorithm'],
    contains: {
        external: ExternalReferenceSchema,
        digest: DigestInfoSchema,
        encryptionAlgorithm: ASN1.ValidateASN1.IsOID
    }
};
export const AddressFields = ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'];
export const AddressSchema = {
    type: 'struct',
    fieldNames: ['addressLines', 'addressType', 'buildingNumber', 'country', 'countrySubDivision', 'department', 'postalCode', 'streetName', 'subDepartment', 'townName'],
    contains: {
        addressLines: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: { type: 'string', kind: 'utf8' } } } },
        addressType: { optional: AddressTypeSchema },
        buildingNumber: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },
        country: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },
        countrySubDivision: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
        department: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
        postalCode: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
        streetName: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },
        subDepartment: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
        townName: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { type: 'string', kind: 'utf8' } } }
    }
};
export const DateAndPlaceOfBirthFields = ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'];
export const DateAndPlaceOfBirthSchema = {
    type: 'struct',
    fieldNames: ['birthDate', 'cityOfBirth', 'countryOfBirth', 'provinceOfBirth'],
    contains: {
        birthDate: { type: 'context', kind: 'explicit', value: 0, contains: ASN1.ValidateASN1.IsDate },
        cityOfBirth: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } },
        countryOfBirth: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } },
        provinceOfBirth: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } }
    }
};
export const EntityTypeFields = ['organization', 'person'];
export const EntityTypeSchema = {
    type: 'struct',
    fieldNames: ['organization', 'person'],
    contains: {
        organization: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { sequenceOf: GenericOrganizationIdentificationSchema } } },
        person: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { sequenceOf: GenericPersonIdentificationSchema } } }
    }
};
export const ContactDetailsFields = ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'];
export const ContactDetailsSchema = {
    type: 'struct',
    fieldNames: ['department', 'emailAddress', 'emailPurpose', 'faxNumber', 'fullName', 'jobResponsibility', 'jobTitle', 'mobileNumber', 'namePrefix', 'other', 'phoneNumber', 'preferredMethod'],
    contains: {
        department: { optional: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } } },
        emailAddress: { optional: { type: 'context', kind: 'explicit', value: 1, contains: { type: 'string', kind: 'utf8' } } },
        emailPurpose: { optional: { type: 'context', kind: 'explicit', value: 2, contains: { type: 'string', kind: 'utf8' } } },
        faxNumber: { optional: { type: 'context', kind: 'explicit', value: 3, contains: { type: 'string', kind: 'utf8' } } },
        fullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
        jobResponsibility: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
        jobTitle: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
        mobileNumber: { optional: { type: 'context', kind: 'explicit', value: 7, contains: { type: 'string', kind: 'utf8' } } },
        namePrefix: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
        other: { optional: { type: 'context', kind: 'explicit', value: 9, contains: { sequenceOf: OtherContactSchema } } },
        phoneNumber: { optional: { type: 'context', kind: 'explicit', value: 10, contains: { type: 'string', kind: 'utf8' } } },
        preferredMethod: { optional: { type: 'context', kind: 'explicit', value: 11, contains: { type: 'string', kind: 'utf8' } } }
    }
};
export const DocumentFields = ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'];
export const DocumentSchema = {
    type: 'struct',
    fieldNames: ['documentNumber', 'front', 'back', 'selfie', 'fullName', 'firstName', 'lastName', 'dob', 'gender', 'address', 'expiresAt', 'issuedAt', 'issuingState', 'issuingCountry', 'refNumber', 'nationality', 'curp', 'claveDeElector', 'classifiedDocumentType', 'curpValidationResponse', 'sambaActivityHistoryResponse'],
    contains: {
        documentNumber: { type: 'context', kind: 'explicit', value: 0, contains: { type: 'string', kind: 'utf8' } },
        front: { optional: { type: 'context', kind: 'explicit', value: 1, contains: ReferenceSchema } },
        back: { optional: { type: 'context', kind: 'explicit', value: 2, contains: ReferenceSchema } },
        selfie: { optional: { type: 'context', kind: 'explicit', value: 3, contains: ReferenceSchema } },
        fullName: { optional: { type: 'context', kind: 'explicit', value: 4, contains: { type: 'string', kind: 'utf8' } } },
        firstName: { optional: { type: 'context', kind: 'explicit', value: 5, contains: { type: 'string', kind: 'utf8' } } },
        lastName: { optional: { type: 'context', kind: 'explicit', value: 6, contains: { type: 'string', kind: 'utf8' } } },
        dob: { optional: { type: 'context', kind: 'explicit', value: 7, contains: ASN1.ValidateASN1.IsDate } },
        gender: { optional: { type: 'context', kind: 'explicit', value: 8, contains: { type: 'string', kind: 'utf8' } } },
        address: { optional: { type: 'context', kind: 'explicit', value: 9, contains: AddressSchema } },
        expiresAt: { optional: { type: 'context', kind: 'explicit', value: 10, contains: ASN1.ValidateASN1.IsDate } },
        issuedAt: { optional: { type: 'context', kind: 'explicit', value: 11, contains: ASN1.ValidateASN1.IsDate } },
        issuingState: { optional: { type: 'context', kind: 'explicit', value: 12, contains: { type: 'string', kind: 'utf8' } } },
        issuingCountry: { optional: { type: 'context', kind: 'explicit', value: 13, contains: { type: 'string', kind: 'utf8' } } },
        refNumber: { optional: { type: 'context', kind: 'explicit', value: 14, contains: { type: 'string', kind: 'utf8' } } },
        nationality: { optional: { type: 'context', kind: 'explicit', value: 15, contains: { type: 'string', kind: 'utf8' } } },
        curp: { optional: { type: 'context', kind: 'explicit', value: 16, contains: { type: 'string', kind: 'utf8' } } },
        claveDeElector: { optional: { type: 'context', kind: 'explicit', value: 17, contains: { type: 'string', kind: 'utf8' } } },
        classifiedDocumentType: { optional: { type: 'context', kind: 'explicit', value: 18, contains: { type: 'string', kind: 'utf8' } } },
        curpValidationResponse: { optional: { type: 'context', kind: 'explicit', value: 19, contains: { type: 'string', kind: 'utf8' } } },
        sambaActivityHistoryResponse: { optional: { type: 'context', kind: 'explicit', value: 20, contains: { type: 'string', kind: 'utf8' } } }
    }
};
export const CertificateAttributeOIDDB = {
    'fullName': '1.3.6.1.4.1.62675.1.0',
    'firstName': '1.3.6.1.4.1.62675.1.0.1',
    'lastName': '1.3.6.1.4.1.62675.1.0.2',
    'middleName': '1.3.6.1.4.1.62675.1.0.3',
    'dateOfBirth': '1.3.6.1.4.1.62675.1.1',
    'address': '1.3.6.1.4.1.62675.1.2',
    'email': '1.3.6.1.4.1.62675.1.3',
    'phoneNumber': '1.3.6.1.4.1.62675.1.4',
    'dateAndPlaceOfBirth': '1.3.6.1.4.1.62675.1.5',
    'jobTitle': '1.3.6.1.4.1.62675.1.6',
    'jobResponsibility': '1.3.6.1.4.1.62675.1.6.1',
    'id': '1.3.6.1.4.1.62675.1.7',
    'issuer': '1.3.6.1.4.1.62675.1.7.1',
    'entityType': '1.3.6.1.4.1.62675.1.8',
    'contactDetails': '1.3.6.1.4.1.62675.1.9',
    'nationality': '1.3.6.1.4.1.62675.1.10',
    'document': '1.3.6.1.4.1.62675.1.11',
    'documentDriversLicense': '1.3.6.1.4.1.62675.1.11.0',
    'documentIdCard': '1.3.6.1.4.1.62675.1.11.1',
    'documentPassport': '1.3.6.1.4.1.62675.1.11.2',
    'documentPassportCard': '1.3.6.1.4.1.62675.1.11.3',
    'documentPermit': '1.3.6.1.4.1.62675.1.11.4',
    'documentVisa': '1.3.6.1.4.1.62675.1.11.5',
    'documentResidenceDocument': '1.3.6.1.4.1.62675.1.11.6'
};
export const SENSITIVE_CERTIFICATE_ATTRIBUTES = [
    'fullName',
    'firstName',
    'lastName',
    'middleName',
    'dateOfBirth',
    'address',
    'email',
    'phoneNumber',
    'dateAndPlaceOfBirth',
    'jobTitle',
    'jobResponsibility',
    'id',
    'issuer',
    'entityType',
    'contactDetails',
    'nationality',
    'document',
    'documentDriversLicense',
    'documentIdCard',
    'documentPassport',
    'documentPassportCard',
    'documentPermit',
    'documentVisa',
    'documentResidenceDocument'
];
export const SensitiveCertificateAttributeNames = [
    'FullName',
    'FirstName',
    'LastName',
    'MiddleName',
    'DateOfBirth',
    'Address',
    'Email',
    'PhoneNumber',
    'DateAndPlaceOfBirth',
    'JobTitle',
    'JobResponsibility',
    'Id',
    'Issuer',
    'EntityType',
    'ContactDetails',
    'Nationality',
    'Document',
    'DocumentDriversLicense',
    'DocumentIdCard',
    'DocumentPassport',
    'DocumentPassportCard',
    'DocumentPermit',
    'DocumentVisa',
    'DocumentResidenceDocument'
];
export const CertificateAttributeFieldNames = {
    'address': AddressFields,
    'dateAndPlaceOfBirth': DateAndPlaceOfBirthFields,
    'entityType': EntityTypeFields,
    'contactDetails': ContactDetailsFields,
    'document': DocumentFields
};
export const CertificateAttributeSchema = {
    'fullName': { type: 'string', kind: 'utf8' },
    'firstName': { type: 'string', kind: 'utf8' },
    'lastName': { type: 'string', kind: 'utf8' },
    'middleName': { type: 'string', kind: 'utf8' },
    'dateOfBirth': ASN1.ValidateASN1.IsDate,
    'address': AddressSchema,
    'email': { type: 'string', kind: 'utf8' },
    'phoneNumber': { type: 'string', kind: 'utf8' },
    'dateAndPlaceOfBirth': DateAndPlaceOfBirthSchema,
    'jobTitle': { type: 'string', kind: 'utf8' },
    'jobResponsibility': { type: 'string', kind: 'utf8' },
    'id': { type: 'string', kind: 'utf8' },
    'issuer': { type: 'string', kind: 'utf8' },
    'entityType': EntityTypeSchema,
    'contactDetails': ContactDetailsSchema,
    'nationality': { type: 'string', kind: 'utf8' },
    'document': DocumentSchema,
    'documentDriversLicense': DocumentSchema,
    'documentIdCard': DocumentSchema,
    'documentPassport': DocumentSchema,
    'documentPassportCard': DocumentSchema,
    'documentPermit': DocumentSchema,
    'documentVisa': DocumentSchema,
    'documentResidenceDocument': DocumentSchema
};
//# sourceMappingURL=iso20022.generated.js.map