import type { QuadrilateralJSON } from "scandit-web-datacapture-core";
import type { ComparisonCheckResult, VizMrzComparisonCheckResult } from "./Enums";
export interface DateResultJSON {
    day: number | null;
    month: number | null;
    year: number;
}
export interface ProfessionalDrivingPermitJSON {
    dateOfExpiry: DateResultJSON;
    codes: string[];
}
export interface VehicleRestrictionJSON {
    vehicleCode: string;
    vehicleRestriction: string;
    dateOfIssue: DateResultJSON;
}
export interface DrivingLicenseCategoryJSON {
    code: string;
    dateOfIssue: DateResultJSON | null;
    dateOfExpiry: DateResultJSON | null;
}
export interface DrivingLicenseDetailsJSON {
    drivingLicenseCategories: DrivingLicenseCategoryJSON[];
    restrictions: string | null;
    endorsements: string | null;
}
export interface ImageInfoJSON {
    face: string | null;
    idFront: string | null;
    idBack: string | null;
}
interface CommonFieldsJSON {
    firstName: string | null;
    lastName: string | null;
    secondaryLastName: string | null;
    fullName: string;
    sex: string | null;
    nationality: string | null;
    address: string | null;
    issuingCountry: string | null;
    issuingCountryIso: string | null;
    documentNumber: string | null;
    documentAdditionalNumber: string | null;
    dateOfBirth: DateResultJSON | null;
    dateOfExpiry: DateResultJSON | null;
    dateOfIssue: DateResultJSON | null;
    documentType: string;
}
export interface CapturedIdJSON {
    firstName: string | null;
    lastName: string | null;
    secondaryLastName: string | null;
    fullName: string;
    sex: string | null;
    nationality: string | null;
    address: string | null;
    issuingCountry: string | null;
    issuingCountryIso: string | null;
    documentNumber: string | null;
    documentAdditionalNumber: string | null;
    dateOfBirth: DateResultJSON | null;
    age: number | null;
    dateOfExpiry: DateResultJSON | null;
    isExpired: boolean | null;
    dateOfIssue: DateResultJSON | null;
    documentType: string;
    capturedResultTypes: string[];
    imageInfo: ImageInfoJSON | null;
    idVerificationDataComparisonAvailable: boolean;
    aamvaBarcodeResult: AAMVABarcodeResultJSON | null;
    apecBusinessTravelCardMrzResult: ApecBusinessTravelCardMrzResultJSON | null;
    argentinaIdBarcodeResult: ArgentinaIdBarcodeResultJSON | null;
    chinaMainlandTravelPermitMrzResult: ChinaMainlandTravelPermitMrzResultJSON | null;
    chinaExitEntryPermitMrzResult: ChinaExitEntryPermitMrzResultJSON | null;
    chinaOneWayPermitFrontMrzResult: ChinaOneWayPermitFrontMrzResultJSON | null;
    chinaOneWayPermitBackMrzResult: ChinaOneWayPermitBackMrzResultJSON | null;
    colombiaIdBarcodeResult: ColombiaIdBarcodeResultJSON | null;
    colombiaDlBarcodeResult: ColombiaDlBarcodeResultJSON | null;
    mrzResult: MRZResultJSON | null;
    southAfricaDlBarcodeResult: SouthAfricaDlBarcodeResultJSON | null;
    southAfricaIdBarcodeResult: SouthAfricaIdBarcodeResultJSON | null;
    usUniformedServicesBarcodeResult: USUniformedServicesBarcodeResultJSON | null;
    commonAccessCardBarcodeResult: CommonAccessCardBarcodeResultJSON | null;
    usVisaVizResult: USVisaVIZResultJSON | null;
    vizResult: VIZResultJSON | null;
}
export type CapturedIdCommonFieldsJSON = Pick<CapturedIdJSON, "address" | "age" | "dateOfBirth" | "dateOfExpiry" | "dateOfIssue" | "documentAdditionalNumber" | "documentNumber" | "documentType" | "firstName" | "fullName" | "isExpired" | "issuingCountry" | "issuingCountryIso" | "lastName" | "nationality" | "secondaryLastName" | "sex">;
export type VIZResultExtendedJSON = Omit<CapturedIdCommonFieldsJSON & VIZResultJSON, "age" | "isExpired">;
interface FieldLocations {
    frontFieldLocations: Partial<Record<string, QuadrilateralJSON>>;
}
export type VIZResultExtendedWithFieldLocationsJSON = FieldLocations & VIZResultExtendedJSON;
export type CapturedIdWithExtendedVIZJSON = Omit<CapturedIdJSON, keyof CapturedIdCommonFieldsJSON | "idVerificationDataComparisonAvailable"> & {
    vizResult: VIZResultExtendedJSON;
};
export type CapturedIdWithExtendedVIZAndLocationsJSON = Omit<CapturedIdJSON, keyof CapturedIdCommonFieldsJSON> & {
    vizResult: VIZResultExtendedWithFieldLocationsJSON;
};
export interface AAMVABarcodeResultJSON extends CommonFieldsJSON {
    aamvaVersion: number;
    isRealId: boolean;
    aliasFamilyName: string | null;
    aliasGivenName: string | null;
    aliasSuffixName: string | null;
    barcodeMetadata: BarcodeMetadataJSON | null;
    cardRevisionDate: DateResultJSON | null;
    documentDiscriminatorNumber: string | null;
    driverNamePrefix: string | null;
    driverNameSuffix: string | null;
    endorsementsCode: string | null;
    eyeColor: string | null;
    firstNameTruncation: string | null;
    hairColor: string | null;
    heightCm: number | null;
    heightInch: number | null;
    iin: string;
    issuingJurisdiction: string;
    issuingJurisdictionIso: string;
    jurisdictionVersion: number;
    lastNameTruncation: string | null;
    firstNameWithoutMiddleName: string | null;
    middleName: string | null;
    middleNameTruncation: string | null;
    placeOfBirth: string | null;
    race: string | null;
    restrictionsCode: string | null;
    vehicleClass: string | null;
    weightKg: number | null;
    weightLbs: number | null;
    rawData: string;
    dictionary: Record<string, string>;
}
export interface ApecBusinessTravelCardMrzResultJSON {
    documentCode: string;
    capturedMrz: string;
    passportIssuerIso: string;
    passportNumber: string;
    passportDateOfExpiry: DateResultJSON | null;
}
export interface ArgentinaIdBarcodeResultJSON {
    documentCopy: string;
    personalIdNumber: string;
}
export interface ChinaMainlandTravelPermitMrzResultJSON {
    documentCode: string;
    capturedMrz: string;
    personalIdNumber: string;
    renewalTimes: number;
    fullNameSimplifiedChinese: string;
    omittedCharacterCountInGBKName: number;
    omittedNameCount: number;
    issuingAuthorityCode?: string | null;
}
export interface ChinaExitEntryPermitMrzResultJSON {
    documentCode: string;
    capturedMrz: string;
}
export interface ChinaOneWayPermitFrontMrzResultJSON {
    documentCode: string;
    fullNameSimplifiedChinese: string;
    capturedMrz: string;
}
export interface ChinaOneWayPermitBackMrzResultJSON {
    documentCode: string;
    namesAreTruncated: boolean;
    capturedMrz: string;
}
export interface ColombiaIdBarcodeResultJSON {
    bloodType: string;
}
export interface ColombiaDlBarcodeResultJSON {
    categories: string[];
    identificationType: string;
}
export interface MRZResultJSON extends CommonFieldsJSON {
    documentCode: string;
    namesAreTruncated: boolean;
    optional: string | null;
    optional1: string | null;
    capturedMrz: string;
}
export interface SouthAfricaDlBarcodeResultJSON {
    version: number;
    licenseCountryOfIssue: string;
    personalIdNumber: string;
    personalIdNumberType: string;
    documentCopy: number;
    driverRestrictionCodes: number[];
    professionalDrivingPermit: ProfessionalDrivingPermitJSON | null;
    vehicleRestrictions: VehicleRestrictionJSON[];
}
export interface SouthAfricaIdBarcodeResultJSON {
    countryOfBirth: string;
    countryOfBirthIso: string;
    citizenshipStatus: string;
    personalIdNumber: string;
}
export interface USUniformedServicesBarcodeResultJSON {
    bloodType: string | null;
    branchOfService: string;
    champusEffectiveDate: DateResultJSON | null;
    champusExpiryDate: DateResultJSON | null;
    civilianHealthCareFlagCode: string;
    civilianHealthCareFlagDescription: string;
    commissaryFlagCode: string;
    commissaryFlagDescription: string;
    deersDependentSuffixCode: number;
    deersDependentSuffixDescription: string;
    directCareFlagCode: string;
    directCareFlagDescription: string;
    exchangeFlagCode: string;
    exchangeFlagDescription: string;
    eyeColor: string;
    familySequenceNumber: number;
    formNumber: string;
    genevaConventionCategory: string | null;
    hairColor: string;
    height: number;
    jpegData: string;
    mwrFlagCode: string;
    mwrFlagDescription: string;
    payGrade: string | null;
    personDesignatorDocument: number;
    rank: string;
    relationshipCode: string | null;
    relationshipDescription: string | null;
    securityCode: string;
    serviceCode: string;
    sponsorFlag: string;
    sponsorPersonDesignatorIdentifier: number | null;
    sponsorName: string | null;
    statusCode: string;
    statusCodeDescription: string;
    version: number;
    weight: number;
}
export interface CommonAccessCardBarcodeResultJSON {
    version: string;
    personDesignatorDocument: number;
    personDesignatorTypeCode: string;
    ediPersonIdentifier: string;
    personnelCategoryCode: string;
    branchOfService: string;
    personnelEntitlementConditionType: string;
    rank: string;
    payPlanCode: string;
    payPlanGradeCode: string;
    cardInstanceIdentifier: string;
    personMiddleInitial: string;
}
export interface USVisaVIZResultJSON {
    visaNumber: string;
    passportNumber: string;
}
export interface VIZResultJSON extends CommonFieldsJSON {
    additionalAddressInformation: string | null;
    additionalNameInformation: string | null;
    documentAdditionalNumber: string | null;
    employer: string | null;
    issuingAuthority: string | null;
    issuingJurisdiction: string | null;
    issuingJurisdictionIso: string | null;
    maritalStatus: string | null;
    personalIdNumber: string | null;
    placeOfBirth: string | null;
    profession: string | null;
    race: string | null;
    religion: string | null;
    residentialStatus: string | null;
    mothersName: string | null;
    fathersName: string | null;
    capturedSides: string;
    isBackSideCaptureSupported: boolean;
    drivingLicenseDetails: DrivingLicenseDetailsJSON | null;
    bloodType: string | null;
    sponsor: string | null;
}
export interface IdCaptureErrorJSON {
    type: string;
    message: string;
}
export interface IdCaptureSessionJSON {
    newlyCapturedId: CapturedIdJSON | null;
    localizedOnlyId: LocalizedOnlyIdJSON | null;
    newlyRejectedId: RejectedIdJSON | null;
    frameSequenceId: number;
    error: IdCaptureErrorJSON | null;
}
export interface LocalizedOnlyIdJSON {
    location: QuadrilateralJSON;
}
export interface RejectedIdJSON {
    location: QuadrilateralJSON;
    rejectionReason: string;
}
export interface ComparisonCheckJSON {
    checkResult: ComparisonCheckResult;
    resultDescription: string;
}
export interface StringComparisonCheckJSON extends ComparisonCheckJSON {
    vizValue: string | null;
    aamvaBarcodeValue: string | null;
}
export interface DateComparisonCheckJSON extends ComparisonCheckJSON {
    vizValue: DateResultJSON | null;
    aamvaBarcodeValue: DateResultJSON | null;
}
export interface AamvaVizBarcodeComparisonResultJSON {
    checksPassed: boolean;
    resultDescription: string;
    issuingCountryIsoMatch: StringComparisonCheckJSON;
    issuingJurisdictionIsoMatch: StringComparisonCheckJSON;
    documentNumbersMatch: StringComparisonCheckJSON;
    fullNamesMatch: StringComparisonCheckJSON;
    datesOfBirthMatch: DateComparisonCheckJSON;
    datesOfExpiryMatch: DateComparisonCheckJSON;
    datesOfIssueMatch: DateComparisonCheckJSON;
}
export interface AamvaBarcodeVerificationResultJSON {
    allChecksPassed: boolean;
}
export interface VizMrzComparisonCheckJSON {
    checkResult: VizMrzComparisonCheckResult;
    resultDescription: string;
}
export interface VizMrzStringComparisonCheckJSON extends VizMrzComparisonCheckJSON {
    vizValue: string | null;
    mrzValue: string | null;
}
export interface VizMrzDateComparisonCheckJSON extends VizMrzComparisonCheckJSON {
    vizValue: DateResultJSON | null;
    mrzValue: DateResultJSON | null;
}
export interface VizMrzComparisonResultJSON {
    checksPassed: boolean;
    resultDescription: string;
    issuingCountryIsoMatch: VizMrzStringComparisonCheckJSON;
    documentNumbersMatch: VizMrzStringComparisonCheckJSON;
    fullNamesMatch: VizMrzStringComparisonCheckJSON;
    datesOfBirth: VizMrzDateComparisonCheckJSON;
    datesOfExpiry: VizMrzDateComparisonCheckJSON;
}
export interface BarcodeMetadataJSON {
    errorCorrection: number;
    moduleCountX: number;
    moduleCountY: number;
}
export {};
