Source

core/interfaces/verification-services/passport-verification.interface.ts

import { VerificationResponse, PassportVerificationRequest as BasePassportVerificationRequest } from '../verification-adapter.interface';

// Re-export the base type
export type PassportVerificationRequest = BasePassportVerificationRequest;

// Passport verification with face matching
export interface PassportWithFaceVerificationRequest extends PassportVerificationRequest {
  image: string; // Base64 encoded face image for matching
}

// Passport verification using document image
export interface PassportImageVerificationRequest {
  passportNumber: string;
  image: string; // Base64 encoded image of the passport
}

// Standard passport verification data structure
export interface PassportVerificationData {
  passportNumber: string;
  firstName: string;
  lastName: string;
  middleName?: string;
  dateOfBirth: string;
  gender?: string;
  nationality?: string;
  expiryDate?: string;
  issueDate?: string;
  photo?: string;
  placeOfIssue?: string;
  [key: string]: any;
}

/**
 * Interface for International Passport verification services
 * Implementations should throw NotImplementedException for unsupported methods
 */
export interface IPassportVerificationService {
  /**
   * Basic passport verification - REQUIRED
   */
  verifyPassport(data: PassportVerificationRequest): Promise<VerificationResponse<PassportVerificationData>>;
  
  /**
   * Passport verification V2 (alternative endpoint) - OPTIONAL
   */
  verifyPassportV2?(data: PassportVerificationRequest): Promise<VerificationResponse<PassportVerificationData>>;
  
  /**
   * Passport verification with face matching - OPTIONAL
   */
  verifyPassportWithFace?(data: PassportWithFaceVerificationRequest): Promise<VerificationResponse<PassportVerificationData>>;
  
  /**
   * Passport verification using document image - OPTIONAL
   */
  verifyPassportImage?(data: PassportImageVerificationRequest): Promise<VerificationResponse<PassportVerificationData>>;
  
  /**
   * Check if the service is ready and configured
   */
  isReady(): boolean;
}