react-native-scanbot-sdk
Version:
Scanbot Document and Barcode Scanner SDK React Native Plugin for Android and iOS
1,220 lines (984 loc) • 37.4 kB
text/typescript
import { GenericDocument, Field } from './GenericDocument';
/// All possible root document types.
export type DocumentsModelRootType =
| typeof MRZDocumentType
| typeof DeIdCardFrontDocumentType
| typeof DeIdCardBackDocumentType
| typeof DePassportDocumentType
| typeof DeDriverLicenseFrontDocumentType
| typeof DeDriverLicenseBackDocumentType
| typeof DeResidencePermitFrontDocumentType
| typeof DeResidencePermitBackDocumentType
| typeof EuropeanHealthInsuranceCardDocumentType
| typeof DeHealthInsuranceCardFrontDocumentType;
export const MRZDocumentType = 'MRZ';
export const DeIdCardFrontDocumentType = 'DeIdCardFront';
export const DeIdCardBackDocumentType = 'DeIdCardBack';
export const DePassportDocumentType = 'DePassport';
export const DeDriverLicenseFrontDocumentType = 'DeDriverLicenseFront';
export const DeDriverLicenseBackDocumentType = 'DeDriverLicenseBack';
export const DeDriverLicenseBackCategoryDocumentType = 'Category';
export const DeDriverLicenseBackCategoriesDocumentType = 'Categories';
export const DeDriverLicenseBackCategoriesADocumentType = 'A';
export const DeDriverLicenseBackCategoriesA1DocumentType = 'A1';
export const DeDriverLicenseBackCategoriesA2DocumentType = 'A2';
export const DeDriverLicenseBackCategoriesAMDocumentType = 'AM';
export const DeDriverLicenseBackCategoriesBDocumentType = 'B';
export const DeDriverLicenseBackCategoriesB1DocumentType = 'B1';
export const DeDriverLicenseBackCategoriesBEDocumentType = 'BE';
export const DeDriverLicenseBackCategoriesCDocumentType = 'C';
export const DeDriverLicenseBackCategoriesC1DocumentType = 'C1';
export const DeDriverLicenseBackCategoriesC1EDocumentType = 'C1E';
export const DeDriverLicenseBackCategoriesCEDocumentType = 'CE';
export const DeDriverLicenseBackCategoriesDDocumentType = 'D';
export const DeDriverLicenseBackCategoriesD1DocumentType = 'D1';
export const DeDriverLicenseBackCategoriesD1EDocumentType = 'D1E';
export const DeDriverLicenseBackCategoriesDEDocumentType = 'DE';
export const DeDriverLicenseBackCategoriesLDocumentType = 'L';
export const DeDriverLicenseBackCategoriesTDocumentType = 'T';
export const DeResidencePermitFrontDocumentType = 'DeResidencePermitFront';
export const DeResidencePermitBackDocumentType = 'DeResidencePermitBack';
export const EuropeanHealthInsuranceCardDocumentType = 'EuropeanHealthInsuranceCard';
export const DeHealthInsuranceCardFrontDocumentType = 'DeHealthInsuranceCardFront';
/** MRZ part of the document */
export class MRZ {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return MRZDocumentType;
}
/** Birth date */
get birthDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate') as Field;
}
/** Check digit birth date */
get checkDigitBirthDate(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CheckDigitBirthDate');
}
/** Check digit document number */
get checkDigitDocumentNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CheckDigitDocumentNumber');
}
/** Check digit expiry date */
get checkDigitExpiryDate(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CheckDigitExpiryDate');
}
/** Check digit general */
get checkDigitGeneral(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CheckDigitGeneral');
}
/** Check digit personal number */
get checkDigitPersonalNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CheckDigitPersonalNumber');
}
/** Date of issuance */
get dateOfIssuance(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'DateOfIssuance');
}
/** Document number */
get documentNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'DocumentNumber');
}
/** Document type code */
get documentTypeCode(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'DocumentTypeCode');
}
/** Expiry date */
get expiryDate(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate');
}
/** Gender */
get gender(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Gender');
}
/** Given names */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Issuing authority */
get issuingAuthority(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'IssuingAuthority');
}
/** Language code */
get languageCode(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'LanguageCode');
}
/** Nationality */
get nationality(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Nationality') as Field;
}
/** Office of issuance */
get officeOfIssuance(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'OfficeOfIssuance');
}
/** TD1 Optional field (line 2) */
get optional1(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Optional1');
}
/** TD1 Optional field (line 3) */
get optional2(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Optional2');
}
/** PIN code */
get pinCode(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'PINCode');
}
/** Personal number */
get personalNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'PersonalNumber');
}
/** Surname */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
/** Travel document type */
get travelDocType(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'TravelDocType');
}
/** Travel document type variant */
get travelDocTypeVariant(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'TravelDocTypeVariant');
}
/** Unknown */
get unknown(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Unknown');
}
/** Version number */
get versionNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'VersionNumber');
}
/** MRV-A/MRV-B (Travel Visa) Optional field */
get visaOptional(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'VisaOptional');
}
}
/** German ID card, front side */
export class DeIdCardFront {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeIdCardFrontDocumentType;
}
/** Birth date */
get birthDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate') as Field;
}
/** Birthplace */
get birthplace(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Birthplace') as Field;
}
/** Six digit card access number */
get cardAccessNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'CardAccessNumber') as Field;
}
/** Expiry date */
get expiryDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate') as Field;
}
/** Given names */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Document ID number (in the top-right corner) */
get id(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ID') as Field;
}
/** Maiden name */
get maidenName(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'MaidenName');
}
/** Nationality */
get nationality(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Nationality') as Field;
}
/** Photo image */
get photo(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Photo') as Field;
}
/** Signature image */
get signature(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Signature') as Field;
}
/** Surname */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
}
/** German ID card, back side */
export class DeIdCardBack {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeIdCardBackDocumentType;
}
/** Address */
get address(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Address') as Field;
}
/** Eye color */
get eyeColor(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'EyeColor') as Field;
}
/** Height */
get height(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Height') as Field;
}
/** Issue date */
get issueDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssueDate') as Field;
}
/** Issuing authority */
get issuingAuthority(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuingAuthority') as Field;
}
/** Pseudonym */
get pseudonym(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Pseudonym');
}
/** Raw MRZ text value */
get rawMRZ(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'RawMRZ') as Field;
}
/** The child document of type "MRZ". */
get mrz(): MRZ {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'MRZ');
return new MRZ(child as GenericDocument);
}
}
export namespace DeIdCardBack {}
/** German travel passport (Reisepass) */
export class DePassport {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DePassportDocumentType;
}
/** Birth date */
get birthDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate') as Field;
}
/** Birthplace */
get birthplace(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Birthplace') as Field;
}
/** Country code */
get countryCode(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'CountryCode') as Field;
}
/** Expiry date */
get expiryDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate') as Field;
}
/** Gender */
get gender(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Gender') as Field;
}
/** Given names */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Document ID number (in the top-right corner) */
get id(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ID') as Field;
}
/** Issue date */
get issueDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssueDate') as Field;
}
/** Issuing authority */
get issuingAuthority(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuingAuthority') as Field;
}
/** Maiden name */
get maidenName(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'MaidenName');
}
/** Nationality */
get nationality(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Nationality') as Field;
}
/** Passport type */
get passportType(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'PassportType') as Field;
}
/** Photo image */
get photo(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Photo') as Field;
}
/** Raw MRZ text value */
get rawMRZ(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'RawMRZ') as Field;
}
/** Signature image */
get signature(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Signature') as Field;
}
/** Surname */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
/** The child document of type "MRZ". */
get mrz(): MRZ {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'MRZ');
return new MRZ(child as GenericDocument);
}
}
export namespace DePassport {}
/** German driver license (Führerschein), front side */
export class DeDriverLicenseFront {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeDriverLicenseFrontDocumentType;
}
/** Birth date (Field 3.) */
get birthDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate') as Field;
}
/** Birthplace (Field 3.) */
get birthplace(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Birthplace') as Field;
}
/** Expiry date (Field 4b.) */
get expiryDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate') as Field;
}
/** Given names (Field 2.) */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Document ID number (in the top-right corner, Field 5.) */
get id(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ID') as Field;
}
/** Issue date (Field 4a.) */
get issueDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssueDate') as Field;
}
/** Issuing authority (Field 4c.) */
get issuingAuthority(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuingAuthority') as Field;
}
/** Driver's license categories (Field 9.) */
get licenseCategories(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'LicenseCategories') as Field;
}
/** Photo image */
get photo(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Photo') as Field;
}
/** Signature image (Field 7.) */
get signature(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Signature') as Field;
}
/** Surname (Field 1.) */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
}
/** German driver license (Führerschein), back side */
export class DeDriverLicenseBack {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeDriverLicenseBackDocumentType;
}
/** Restrictions applied for the driver's license (Field 12.) */
get restrictions(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Restrictions');
}
/** The child document of type "Categories". */
get categories(): DeDriverLicenseBack.Categories {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'Categories');
return new DeDriverLicenseBack.Categories(child as GenericDocument);
}
}
export namespace DeDriverLicenseBack {
/** A category row from the categories table */
export abstract class Category {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
abstract requiredDocumentType(): string;
/** Restrictions (Column 12.) */
get restrictions(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Restrictions');
}
/** Valid from (Column 10.) */
get validFrom(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ValidFrom') as Field;
}
/** Valid until (Column 11.) */
get validUntil(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ValidUntil') as Field;
}
}
/** Categories table row container */
export class Categories {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesDocumentType;
}
/** The child document of type "A". */
get a(): DeDriverLicenseBack.Categories.A {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'A');
return new DeDriverLicenseBack.Categories.A(child as GenericDocument);
}
/** The child document of type "A1". */
get a1(): DeDriverLicenseBack.Categories.A1 {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'A1');
return new DeDriverLicenseBack.Categories.A1(child as GenericDocument);
}
/** The child document of type "A2". */
get a2(): DeDriverLicenseBack.Categories.A2 {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'A2');
return new DeDriverLicenseBack.Categories.A2(child as GenericDocument);
}
/** The child document of type "AM". */
get am(): DeDriverLicenseBack.Categories.AM {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'AM');
return new DeDriverLicenseBack.Categories.AM(child as GenericDocument);
}
/** The child document of type "B". */
get b(): DeDriverLicenseBack.Categories.B {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'B');
return new DeDriverLicenseBack.Categories.B(child as GenericDocument);
}
/** The child document of type "B1". */
get b1(): DeDriverLicenseBack.Categories.B1 | undefined {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'B1');
return child ? new DeDriverLicenseBack.Categories.B1(child) : undefined;
}
/** The child document of type "BE". */
get be(): DeDriverLicenseBack.Categories.BE {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'BE');
return new DeDriverLicenseBack.Categories.BE(child as GenericDocument);
}
/** The child document of type "C". */
get c(): DeDriverLicenseBack.Categories.C {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'C');
return new DeDriverLicenseBack.Categories.C(child as GenericDocument);
}
/** The child document of type "C1". */
get c1(): DeDriverLicenseBack.Categories.C1 {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'C1');
return new DeDriverLicenseBack.Categories.C1(child as GenericDocument);
}
/** The child document of type "C1E". */
get c1E(): DeDriverLicenseBack.Categories.C1E {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'C1E');
return new DeDriverLicenseBack.Categories.C1E(child as GenericDocument);
}
/** The child document of type "CE". */
get ce(): DeDriverLicenseBack.Categories.CE {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'CE');
return new DeDriverLicenseBack.Categories.CE(child as GenericDocument);
}
/** The child document of type "D". */
get d(): DeDriverLicenseBack.Categories.D {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'D');
return new DeDriverLicenseBack.Categories.D(child as GenericDocument);
}
/** The child document of type "D1". */
get d1(): DeDriverLicenseBack.Categories.D1 {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'D1');
return new DeDriverLicenseBack.Categories.D1(child as GenericDocument);
}
/** The child document of type "D1E". */
get d1E(): DeDriverLicenseBack.Categories.D1E {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'D1E');
return new DeDriverLicenseBack.Categories.D1E(child as GenericDocument);
}
/** The child document of type "DE". */
get de(): DeDriverLicenseBack.Categories.DE {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'DE');
return new DeDriverLicenseBack.Categories.DE(child as GenericDocument);
}
/** The child document of type "L". */
get l(): DeDriverLicenseBack.Categories.L {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'L');
return new DeDriverLicenseBack.Categories.L(child as GenericDocument);
}
/** The child document of type "T". */
get t(): DeDriverLicenseBack.Categories.T {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'T');
return new DeDriverLicenseBack.Categories.T(child as GenericDocument);
}
}
export namespace Categories {
/** DeDriverLicenseBack.Categories.A */
export class A extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesADocumentType;
}
}
/** DeDriverLicenseBack.Categories.A1 */
export class A1 extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesA1DocumentType;
}
}
/** DeDriverLicenseBack.Categories.A2 */
export class A2 extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesA2DocumentType;
}
}
/** DeDriverLicenseBack.Categories.AM */
export class AM extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesAMDocumentType;
}
}
/** DeDriverLicenseBack.Categories.B */
export class B extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesBDocumentType;
}
}
/** DeDriverLicenseBack.Categories.B1 */
export class B1 extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesB1DocumentType;
}
}
/** DeDriverLicenseBack.Categories.BE */
export class BE extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesBEDocumentType;
}
}
/** DeDriverLicenseBack.Categories.C */
export class C extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesCDocumentType;
}
}
/** DeDriverLicenseBack.Categories.C1 */
export class C1 extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesC1DocumentType;
}
}
/** DeDriverLicenseBack.Categories.C1E */
export class C1E extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesC1EDocumentType;
}
}
/** DeDriverLicenseBack.Categories.CE */
export class CE extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesCEDocumentType;
}
}
/** DeDriverLicenseBack.Categories.D */
export class D extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesDDocumentType;
}
}
/** DeDriverLicenseBack.Categories.D1 */
export class D1 extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesD1DocumentType;
}
}
/** DeDriverLicenseBack.Categories.D1E */
export class D1E extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesD1EDocumentType;
}
}
/** DeDriverLicenseBack.Categories.DE */
export class DE extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesDEDocumentType;
}
}
/** DeDriverLicenseBack.Categories.L */
export class L extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesLDocumentType;
}
}
/** DeDriverLicenseBack.Categories.T */
export class T extends Category {
constructor(document: GenericDocument) {
super(document);
}
requiredDocumentType(): string {
return DeDriverLicenseBackCategoriesTDocumentType;
}
}
}
}
/** German Residence Permit (Aufenthaltstitel), Front side */
export class DeResidencePermitFront {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeResidencePermitFrontDocumentType;
}
/** Birth date (Geburtsdatum) */
get birthDate(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate');
}
/** Six digit card access number */
get cardAccessNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'CardAccessNumber') as Field;
}
/** Expiry date (Gültig bis) */
get expiryDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate') as Field;
}
/** Gender (Geschlecht) */
get gender(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Gender');
}
/** Given names */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Document ID number (in the top-right corner) */
get id(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ID') as Field;
}
/** Nationality (Staatsangehörigkeit) */
get nationality(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Nationality');
}
/** Photo image */
get photo(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Photo') as Field;
}
/** Place of issue (Ausstellungsort) */
get placeOfIssue(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'PlaceOfIssue');
}
/** Remarks (Anmerkungen) */
get remarks(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Remarks') as Field;
}
/** Signature image */
get signature(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Signature') as Field;
}
/** Surname */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
/** Title type (Art des Titels) */
get titleType(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'TitleType') as Field;
}
/** Valid from date (Gültig ab) */
get validFrom(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'ValidFrom');
}
}
/** German Residence Permit (Aufenthaltstitel), Back side */
export class DeResidencePermitBack {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeResidencePermitBackDocumentType;
}
/** Address (Anschrift) */
get address(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Address') as Field;
}
/** Birth date (Geburtsdatum) */
get birthDate(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate');
}
/** Birthplace (Geburtsort) */
get birthplace(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Birthplace') as Field;
}
/** Eye color (Augenfarbe) */
get eyeColor(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'EyeColor') as Field;
}
/** Gender (Geschlecht) */
get gender(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Gender');
}
/** Height (Größe) */
get height(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Height') as Field;
}
/** Issuing authority (Ausländerbehörde) */
get issuingAuthority(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuingAuthority') as Field;
}
/** Nationality (Staatsangehörigkeit) */
get nationality(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Nationality');
}
/** Raw MRZ text value */
get rawMRZ(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'RawMRZ') as Field;
}
/** Remarks (Anmerkungen) */
get remarks(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Remarks');
}
/** The child document of type "MRZ". */
get mrz(): MRZ {
const child = this.document.children.find((c: GenericDocument) => c.type.name === 'MRZ');
return new MRZ(child as GenericDocument);
}
}
export namespace DeResidencePermitBack {}
/** European Health Insurance Card (EHIC). Supports formats with both four and five lines of data.
*/
export class EuropeanHealthInsuranceCard {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return EuropeanHealthInsuranceCardDocumentType;
}
/** Barcode image (only present in some formats) */
get barcode(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Barcode');
}
/** Birth date */
get birthDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'BirthDate') as Field;
}
/** Card number */
get cardNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'CardNumber') as Field;
}
/** Country code (ISO 3166-1 alpha-2) */
get countryCode(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'CountryCode') as Field;
}
/** Expiry date */
get expiryDate(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'ExpiryDate') as Field;
}
/** Given names */
get givenNames(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'GivenNames') as Field;
}
/** Issuer name */
get issuerName(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuerName') as Field;
}
/** Issuer number */
get issuerNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuerNumber') as Field;
}
/** Personal number */
get personalNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'PersonalNumber') as Field;
}
/** Signature image */
get signature(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'Signature');
}
/** Surname */
get surname(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Surname') as Field;
}
}
/** Front side of the German health insurance card (elektronische Gesundheitskarte).
For the backside, see EuropeanHealthInsuranceCard.
*/
export class DeHealthInsuranceCardFront {
private _document: GenericDocument;
get document(): GenericDocument {
return this._document;
}
constructor(document: GenericDocument) {
if (document.type.name !== this.requiredDocumentType()) {
throw new Error(
`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`
);
}
this._document = document;
}
requiredDocumentType(): string {
return DeHealthInsuranceCardFrontDocumentType;
}
/** Six digit card access number */
get cardAccessNumber(): Field | undefined {
return this.document.fields.find((f: Field) => f.type.name === 'CardAccessNumber');
}
/** Issuer name */
get issuerName(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuerName') as Field;
}
/** Issuer number (Versicherung bzw. Kennnummer des Trägers) */
get issuerNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'IssuerNumber') as Field;
}
/** Full name with title */
get name(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'Name') as Field;
}
/** Personal number (Versichertennummer) */
get personalNumber(): Field {
return this.document.fields.find((f: Field) => f.type.name === 'PersonalNumber') as Field;
}
}