import {z} from 'zod'
export type Address = {address_street_1?: string | undefined, address_street_2?: string | undefined, address_city?: string | undefined, address_state?: string | undefined, address_zip_code?: string | undefined, address_country?: string | undefined};
export type BusinessData = {name?: string | undefined, alternate_name?: string | undefined, tax_identification_number?: string | undefined, website?: string | undefined, formation_date?: string | undefined, country_code?: string | undefined, state_code?: string | undefined, business_entity_id?: string | undefined, addresses?: Array
| undefined, phone_numbers?: Array | undefined, email_addresses?: Array | undefined};
export type BusinessAdditionalInfoType = 'BANK_STATEMENT_DOCUMENT' | 'BUSINESS_REGISTRATION_DOCUMENT' | 'OPERATING_LICENSE_DOCUMENT' | 'FRAUD_CHECK_DOCUMENT' | 'ADDRESS_PROOF_DOCUMENT' | 'BANK_ACCOUNT_DETAILS' | 'SOURCE_OF_FUNDS_DOCUMENT' | 'CHAMBER_OF_COMMERCE_CERTIFICATE' | 'CAC_CERTIFICATE' | 'ARTICLES_OF_INCORPORATION' | 'AML_POLICY' | 'FINANCIAL_CONDUCT_AUTHORITY_AUTHORIZATION' | 'DIRECTORS_REGISTRY' | 'CORPORATE_CHART' | 'SHAREHOLDERS_REGISTRY' | 'BALANCE_SHEET' | 'REPORTING_ENTITY_REGISTRATION_DOCUMENT' | 'COMPANY_CONSTITUTION' | 'MEMORANDUM_OF_ASSOCIATION' | 'PARTNERSHIP_DEED' | 'CERTIFIED_ANNUAL_RETURNS_STATEMENT' | 'COMPANY_PROFILE' | 'AUDITED_ACCOUNTS' | 'ANTI_BRIBERY_POLICY' | 'DATA_PROTECTION_POLICY' | 'INVOICE' | 'PEP_FORM' | 'TAX_REGISTRATION_CERTIFICATE' | 'INTENDED_USAGE_DOCUMENT' | 'OTHER';
export type BusinessIndividualAdditionalInfo = {additional_info_type?: BusinessAdditionalInfoType | undefined, additional_info_data?: (string | {file_data?: string | undefined, file_name?: string | undefined, file_uuid?: string | undefined, document_input_title?: (string | null) | undefined} | {[key: string]: unknown}) | undefined};
export type BusinessAdditionalInfo = Array;
export type BusinessVerificationRequest = {template_id: string, client_reference_id?: string | undefined, client_reference_data?: Record | undefined, callback_url?: string | undefined, events_callback_url?: string | undefined, business_data?: BusinessData | undefined, additional_info?: BusinessAdditionalInfo | undefined};
export type CreateApiVerifyRunBusinessVerificationArgs = {body: BusinessVerificationRequest};
export type CreateApiVerifyRunBusinessVerificationOptions = {baseUrl?: string | undefined, apiKey?: string | undefined, fetch?: typeof fetch | undefined};
export const aiPriseResultStatusV2 = z.enum(["APPROVED", "DECLINED", "REVIEW", "UNKNOWN"]).nullable();
export const aiPriseResponseSummaryV2 = z.object({verification_result: aiPriseResultStatusV2.optional()});
export const aiPriseRunStatusV2 = z.enum(["NOT_STARTED", "RUNNING", "PENDING", "FAILED", "COMPLETED", "SUBMITTED"]).nullable();
export const statusReasonCodeEntry = z.object({code: z.string().optional(), message: z.string().optional()});
export const aMLHitType = z.enum(["PEP", "PEP_CLASS_1", "PEP_CLASS_2", "PEP_CLASS_3", "PEP_CLASS_4", "ADVERSE_MEDIA", "ADVERSE_MEDIA_PROPERTY", "ADVERSE_MEDIA_FINANCIAL_AML_CFT", "ADVERSE_MEDIA_FRAUD_LINKED", "ADVERSE_MEDIA_NARCOTICS_AML_CFT", "ADVERSE_MEDIA_VIOLENCE_AML_CFT", "ADVERSE_MEDIA_TERRORISM", "ADVERSE_MEDIA_CYBERCRIME", "ADVERSE_MEDIA_GENERAL_AML_CFT", "ADVERSE_MEDIA_REGULATORY", "ADVERSE_MEDIA_FINANCIAL_DIFFICULTY", "ADVERSE_MEDIA_VIOLENCE_NON_AML_CFT", "ADVERSE_MEDIA_OTHER_FINANCIAL", "ADVERSE_MEDIA_OTHER_SERIOUS", "ADVERSE_MEDIA_OTHER_MINOR", "SANCTION", "WARNING", "FITNESS_PROBITY", "CRIMINAL_RECORD", "LEGAL_BACKGROUND", "UNKNOWN"]);
export const sourceDetails = z.object({name: z.string().nullable().optional(), source_id: z.string().nullable().optional(), url: z.string().nullable().optional(), listing_started: z.string().nullable().optional(), listing_ended: z.string().nullable().optional(), country_codes: z.array(z.string()).nullable().optional(), aml_types: z.array(z.string()).nullable().optional()});
export const fieldTypeEnum = z.enum(["date_of_birth", "place_of_birth", "date_of_death", "country_codes", "country_names", "url"]);
export const fieldDetail = z.object({name: z.string().optional(), value: z.union([z.string(), z.object({}), z.array(z.string())]).optional(), type: fieldTypeEnum.optional()});
export const mediaInfo = z.object({title: z.string().nullable().optional(), url: z.string().nullable().optional(), date: z.string().nullable().optional(), snippet: z.string().nullable().optional()});
export const aMLHit = z.object({hit_type: aMLHitType.optional(), source_details: sourceDetails.optional(), fields: z.array(fieldDetail).nullable().optional(), media: z.array(mediaInfo).nullable().optional()});
export const resolutionStatus = z.enum(["RESOLVED", "UNRESOLVED", "WHITELISTED"]);
export const entityHitWithoutHistory = z.object({entity_type: z.enum(["PERSON", "COMPANY", "ORGANISATION", "UNKNOWN"]).optional(), name: z.string().optional(), name_match_score: z.number().gte(0).lte(100).optional(), also_known_as: z.array(z.string()).optional(), aml_hits: z.array(aMLHit).optional(), date_of_birth: z.string().nullable().optional(), date_of_birth_match_score: z.number().gte(0).lte(100).nullable().optional(), id: z.string().optional(), resolution_status: resolutionStatus.optional(), is_deleted: z.boolean().optional(), additional_fields: z.object({}).optional()});
export const aMLEntityHitHistoryEvent = z.enum(["ADDED", "UPDATED", "REMOVED", "MONITORING_UPDATE"]);
export const aMLEntityHitHistory = z.object({created_at: z.number().int().optional(), entity_hit: entityHitWithoutHistory.optional(), event: aMLEntityHitHistoryEvent.optional()});
export const entityHit = z.object({entity_type: z.enum(["PERSON", "COMPANY", "ORGANISATION", "UNKNOWN"]).optional(), name: z.string().optional(), name_match_score: z.number().gte(0).lte(100).optional(), also_known_as: z.array(z.string()).optional(), associates: z.array(z.object({name: z.string().optional(), association: z.string().optional()})).optional(), aml_hits: z.array(aMLHit).optional(), date_of_birth: z.string().nullable().optional(), date_of_birth_match_score: z.number().gte(0).lte(100).nullable().optional(), id: z.string().optional(), resolution_status: resolutionStatus.optional(), history: z.array(aMLEntityHitHistory).optional(), is_deleted: z.boolean().optional(), additional_fields: z.object({}).optional()});
export const aiPriseReasonCode = z.enum(["UNRECOGNIZED_DOCUMENT", "UNREADABLE_DOCUMENT", "DOCUMENT_NOT_FOUND", "DOCUMENT_EXPIRED", "DOCUMENT_FRONT_BACK_MISMATCH", "DOCUMENT_DAMAGED", "DOCUMENT_FRONT_MISSING", "DOCUMENT_BACK_MISSING", "DOCUMENT_CROPPED", "DOCUMENT_FACE_NOT_FOUND", "INVALID_DOCUMENT_DETAILS", "DOCUMENT_TYPE_MISMATCH", "UNABLE_TO_EXTRACT_DOCUMENT_METADATA", "MISSING_EXPIRY_DATE", "MISSING_ISSUE_DATE", "MISSING_BIRTH_DATE", "MISSING_DOCUMENT_NUMBER", "MISSING_PERSONAL_NUMBER", "MISSING_ADDRESS", "MISSING_POSTCODE", "MISSING_NAME", "MISSING_GENDER", "MISSING_NATIONALITY", "MISSING_DOCUMENT_DETAILS", "DOCUMENT_FRONT_OR_BACK_MISSING", "NAME_VERIFICATION_FAILED", "ID_DATA_MISMATCH", "ID_TYPE_MISMATCH", "ID_NOT_ALLOWED", "ID_COUNTRY_MISMATCH", "BIRTH_DATE_MISMATCH", "ADDRESS_MISMATCH", "DATABASE_LOOKUP_ISSUE", "DOCUMENT_PHOTO_OF_PHOTO", "SCREEN_DETECTED", "IMAGE_FORGED_EDITED", "FEATURE_VERIFICATION_FAILED", "FAKE_ID", "DOCUMENT_FOUND_ON_INTERNET", "ARTIFICIAL_IMAGE", "ARTIFICIAL_TEXT", "TEXT_FORGERY", "IMAGE_TOO_SMALL", "GLARE_DETECTED", "IMAGE_TOO_BLURRY", "CHECK_DIGIT_FAILED", "PRINTOUT_DETECTED", "DOCUMENT_CONVERTED_TO_IMAGE", "BLACK_WHITE_DOCUMENT", "FACE_NOT_FOUND", "MULTIPLE_FACES", "FACE_MISMATCH", "LOW_FACE_SIMILARITY", "FACE_IDENTICAL", "FACE_NOT_LIVE", "FACE_LIVENESS_REVIEW_REQUIRED", "FACE_PHOTO_OF_PHOTO", "FACE_COVERED", "FACE_EDITED", "FACE_BLUR", "FACE_TOO_CLOSE", "FACE_CROPPED", "FACE_TOO_SMALL", "FACE_ANGLE_TOO_LARGE", "FACE_DEEPFAKE", "ID_NUMBER_NOT_VERIFIED", "INVALID_ID_NUMBER_SUPPLIED", "LOOKUP_SOURCE_DOWN", "LOOKUP_FACE_NOT_FOUND", "ID_PREVIOUSLY_SEEN", "AGE_UNDER_18", "AML_MATCH", "API_DATA_REQUIREMENTS_NOT_MET", "IP_ADDRESS_SUSPICIOUS", "SUSPICIOUS_USER_BEHAVIOUR", "GEOLOCATION_MISMATCH", "COMPANY_NOT_FOUND", "COMPANY_NUMBER_NOT_VALID_FORMAT", "COMPANY_PREVIOUSLY_SEEN", "CUSTOM_ERROR_CODE", "DOCUMENT_TAMPERED", "DOCUMENT_MINOR_DIGITAL_ARTIFACTS", "DOCUMENT_REQUIRES_REVIEW", "VALIDATION_RULES_DECLINED", "VALIDATION_RULES_REVIEW", "DOCUMENT_TOO_FAR", "DOCUMENT_SIZE_TOO_LARGE", "BROKEN_DOCUMENT", "INVALID_FILE_EXTENSION", "FILE_TOO_LARGE", "FACE_LIVENESS_TOO_FAR_FROM_CAMERA", "FACE_PREVIOUSLY_ONBOARDED", "ADDRESS_DOCUMENT_MISSING_ADDRESS", "ADDRESS_DOCUMENT_ADDRESS_MISMATCH", "ADDRESS_DOCUMENT_MISSING_NAME", "ADDRESS_DOCUMENT_NAME_VERIFICATION_FAILED", "ADDRESS_DOCUMENT_MISSING_ISSUE_DATE", "ADDRESS_DOCUMENTS_NOT_SAME", "EXPIRY_DATE_MISSING_USING_ISSUE_DATE", "EXPIRY_AND_ISSUE_DATE_MISSING", "ADDRESS_DOCUMENT_DOCUMENT_EXPIRED", "ADDRESS_DOCUMENT_DOCUMENT_NOT_ISSUED_RECENTLY", "ADDRESS_DOCUMENT_UNRECOGNIZED_DOCUMENT", "TOR_DETECTED", "VPN_DETECTED", "BOT_DETECTED", "BROWSER_PREVIOUSLY_SEEN", "IP_ADDRESS_PREVIOUSLY_SEEN", "PRIVACY_SETTINGS_BLOCKED", "BUSINESS_ID_MISMATCH", "BUSINESS_INFO_NAME_MISMATCH", "REGISTRATION_STATUS_INACTIVE", "UNABLE_TO_EXTRACT_DATA", "EMAIL_NOT_FOUND", "PHONE_NUMBER_NOT_FOUND", "BROWSER_PREVIOUSLY_ATTEMPTED", "IP_ADDRESS_PREVIOUSLY_ATTEMPTED", "ID_PREVIOUSLY_ATTEMPTED", "BACKGROUND_CHECK_ALERT", "BUSINESS_ID_NOT_VERIFIED", "MRZ_DATA_MISMATCH", "SELFIE_VIDEO_FRAUD", "SELFIE_VIDEO_MISSING", "VIDEO_INJECTION_DETECTED", "VIRTUAL_CAMERA_DETECTED", "ADDRESS_ZIPCODE_MISMATCH", "FACE_AGE_MISMATCH", "NO_GLARES_DETECTED", "KEYWORD_MATCHES_FOUND", "HIGH_RISK_INDUSTRY_MATCHES_FOUND", "IMAGE_IN_FOCUS", "GOOD_IMAGE_RESOLUTION", "GOOD_IMAGE_COLOR", "GOOD_IMAGE_PERSPECTIVE", "DOCUMENT_FULLY_PRESENT", "PORTRAIT_PRESENT_IN_IMAGE", "GOOD_IMAGE_BRIGHTNESS", "NO_OCCLUSION_DETECTED", "GOOD_IMAGE_QUALITY", "IMAGE_DOCUMENT_TYPE_DETECTED", "IMAGE_TEXT_FIELDS_VERIFIED", "PO_BOX_DETECTED", "PARKED_WEBSITE", "SOCIAL_MEDIA_BROKEN_LINKS", "SOCIAL_MEDIA_BUSINESS_MISMATCH", "INCONSISTENCIES_IN_WEBSITE_CONTENT", "STOCK_IMAGES_FOUND", "PLACEHOLDER_TEXT_FOUND_IN_WEBSITE_CONTENT", "WEBSITE_NOT_FOUND", "WEBSITE_PARKED", "WEBSITE_REDIRECTED", "WEBSITE_GENERIC", "WEBSITE_NOT_AUTHENTIC", "BUSINESS_DESCRIPTION_MISMATCH", "TERMS_AND_CONDITIONS_NOT_FOUND", "TERMS_AND_CONDITIONS_FAILED", "INVALID_WEBSITE_SSL", "BUSINESS_GEOLOCATION_MISMATCH", "EMAIL_ADDRESS_MISMATCH", "PHONE_NUMBER_MISMATCH", "PROHIBITED_INDUSTRY_MATCHES_FOUND", "WEBSITE_URL_AND_BUSINESS_NAME_MISMATCH", "BUSINESS_COUNTRY_MISMATCH", "BUSINESS_WEBSITE_MISMATCH", "BUSINESS_FORMATION_DATE_MISMATCH", "BUSINESS_TAX_ID_MISMATCH"]);
export const warningEntry = z.object({code: aiPriseReasonCode.optional(), message: z.string().nullable().optional(), warning_id: z.string().optional(), resolution_status: resolutionStatus.optional()});
export const aMLInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), entity_hits: z.array(entityHit).optional(), result: aiPriseResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), num_hits: z.number().optional(), aml_hit_summary: z.record(z.string(), z.string()).optional(), section_id: z.string().optional(), search_criteria: z.object({search_term: z.string().nullable().optional(), fuzziness_score: z.number().nullable().optional(), exact_match: z.boolean().nullable().optional(), birth_year: z.number().nullable().optional()}).optional()});
export const address = z.object({address_street_1: z.string().optional(), address_street_2: z.string().optional(), address_city: z.string().optional(), address_state: z.string().optional(), address_zip_code: z.string().optional(), address_country: z.string().optional()});
export const questionType = z.enum(["SINGLE_CHOICE", "MULTIPLE_CHOICE", "BOOLEAN", "TEXT", "FILE", "EMAIL", "PHONE_NUMBER", "SINGLE_SELECT", "MULTIPLE_SELECT", "DATE", "PARAGRAPH", "URL"]);
export const question = z.object({question: z.string().nullable().optional(), answer: z.string().nullable().optional(), answer_file: z.string().nullable().optional(), order: z.number().nullable().optional(), answer_type: questionType.optional(), answer_language: z.string().nullable().optional()});
export const questionGroupMetaData = z.object({template_id: z.string().optional(), verification_session_id: z.string().optional(), updated_at: z.number().int().optional()});
export const questionGroup = z.record(z.string(), z.union([question, z.string(), questionGroupMetaData]));
export const businessDataWithComputedFields = z.object({name: z.string().optional(), alternate_name: z.string().optional(), tax_identification_number: z.string().optional(), website: z.string().optional(), formation_date: z.string().optional(), country_code: z.string().optional(), state_code: z.string().optional(), business_entity_id: z.string().optional(), addresses: z.array(address).optional(), phone_numbers: z.array(z.string()).optional(), email_addresses: z.array(z.string()).optional(), questions_response: z.record(z.string(), questionGroup).optional()});
export const businessAdditionalInfoType = z.enum(["BANK_STATEMENT_DOCUMENT", "BUSINESS_REGISTRATION_DOCUMENT", "OPERATING_LICENSE_DOCUMENT", "FRAUD_CHECK_DOCUMENT", "ADDRESS_PROOF_DOCUMENT", "BANK_ACCOUNT_DETAILS", "SOURCE_OF_FUNDS_DOCUMENT", "CHAMBER_OF_COMMERCE_CERTIFICATE", "CAC_CERTIFICATE", "ARTICLES_OF_INCORPORATION", "AML_POLICY", "FINANCIAL_CONDUCT_AUTHORITY_AUTHORIZATION", "DIRECTORS_REGISTRY", "CORPORATE_CHART", "SHAREHOLDERS_REGISTRY", "BALANCE_SHEET", "REPORTING_ENTITY_REGISTRATION_DOCUMENT", "COMPANY_CONSTITUTION", "MEMORANDUM_OF_ASSOCIATION", "PARTNERSHIP_DEED", "CERTIFIED_ANNUAL_RETURNS_STATEMENT", "COMPANY_PROFILE", "AUDITED_ACCOUNTS", "ANTI_BRIBERY_POLICY", "DATA_PROTECTION_POLICY", "INVOICE", "PEP_FORM", "TAX_REGISTRATION_CERTIFICATE", "INTENDED_USAGE_DOCUMENT", "OTHER"]);
export const businessIndividualAdditionalInfo = z.object({additional_info_type: businessAdditionalInfoType.optional(), additional_info_data: z.union([z.string(), z.object({file_data: z.string().optional(), file_name: z.string().optional(), file_uuid: z.string().optional(), document_input_title: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown()))]).optional()});
export const businessAdditionalInfo = z.array(businessIndividualAdditionalInfo);
export const aiPriseAPIResultStatusV2 = z.enum(["APPROVED", "DECLINED", "REVIEW", "UNKNOWN", "FOUND", "NOT_FOUND"]);
export const extractedAddress = z.object({full_address: z.string().optional(), parsed_address: z.object({address_street_1: z.string().optional(), address_street_2: z.string().optional(), address_city: z.string().optional(), address_state: z.string().optional(), address_zip_code: z.string().optional(), address_country: z.string().optional(), address_type: z.string().optional()}).optional(), source: z.array(z.object({type: z.string().optional(), state: z.string().optional(), status: z.string().optional(), file_number: z.string().optional(), labels: z.array(z.string()).optional()})).optional(), additional_info: z.record(z.string(), z.unknown()).optional()});
export const businessActivity = z.object({code: z.string().optional(), code_type: z.string().optional(), description: z.string().optional(), activity_type: z.enum(["primary", "secondary"]).optional()});
export const businessScope = z.object({business_description: z.string().nullable().optional(), business_activities: z.array(businessActivity).optional()});
export const businessInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), name: z.string().optional(), entity_type: z.string().optional(), phone_numbers: z.array(z.string()).optional(), emails: z.array(z.string()).optional(), addresses: z.array(extractedAddress).optional(), website: z.string().optional(), tax_id: z.string().optional(), business_id: z.string().optional(), business_scope: businessScope.optional(), country_code: z.string().optional(), additional_fields: z.record(z.string(), z.unknown()).optional(), section_id: z.string().optional()});
export const registrationRecord = z.object({name: z.string().nullable().optional(), record_id: z.string().nullable().optional(), entity_type: z.string().nullable().optional(), status: z.string().nullable().optional(), registration_date: z.string().nullable().optional(), city: z.string().nullable().optional(), state: z.string().nullable().optional(), country: z.string().nullable().optional(), source_url: z.string().nullable().optional(), source_name: z.string().nullable().optional(), addresses: z.array(extractedAddress).optional(), additional_fields: z.object({}).optional()});
export const registrationInfo = z.object({formation_date: z.string().nullable().optional(), status: z.string().nullable().optional(), normalised_status: z.string().nullable().optional(), registration_records: z.array(registrationRecord).optional()});
export const normalisedRole = z.enum(["ULTIMATE_BENEFICIAL_OWNER", "CONTROLLING_PERSON", "DIRECTOR", "LEGAL_REPRESENTATIVE", "SHAREHOLDER", "EMPLOYEE", "UNKNOWN"]).nullable();
export const personRoleDetails = z.object({name: z.string().nullable().optional(), start_date: z.string().nullable().optional(), end_date: z.string().nullable().optional(), is_active: z.boolean().nullable().optional(), normalised_name: normalisedRole.optional()});
export const identityNumberType = z.enum(["SSN9", "SSN4", "DRIVER_LICENSE", "PASSPORT", "NATIONAL_ID", "VOTER_ID", "BVN", "NIN", "NIN_SLIP", "SSNIT", "TAX_ID", "KENYA_KRA_PIN", "ALIEN_CARD", "RESIDENT_ID", "COLOMBIA_PPT_NUMBER", "GHANA_CARD_NUMBER"]).nullable();
export const identityDocumentType = z.enum(["PASSPORT", "DRIVER_LICENSE", "NATIONAL_ID", "PAN_CARD", "ID_CARD", "VOTER_ID_CARD", "RESIDENT_CARD", "GHANA_CARD", "GHANA_SSNIT_CARD", "KENYA_ALIEN_CARD", "COLOMBIA_PPT"]).nullable();
export const outputIdentity = z.object({identity_country_code: z.string().optional(), identity_number_type: identityNumberType.optional(), identity_number: z.string().optional(), identity_document_type: identityDocumentType.optional(), identity_document_front: z.string().optional(), identity_document_back: z.string().optional()});
export const riskLevelEnum = z.enum(["PROHIBITED", "HIGH", "MEDIUM", "LOW"]).nullable();
export const evaluatedRiskRuleStatusEnum = z.enum(["PASSED", "NOT_PASSED", "FAILED"]).nullable();
export const evaluatedRiskRule = z.object({rule_name: z.string().nullable().optional(), result: aiPriseResultStatusV2.optional(), score: z.number().nullable().optional(), status: evaluatedRiskRuleStatusEnum.optional()});
export const riskInfoScoring = z.object({score: z.number().nullable().optional(), risk_level: riskLevelEnum.optional(), rules_evaluated: z.array(evaluatedRiskRule).optional(), section_id: z.string().nullable().optional()});
export const riskInfoDecisioning = z.object({result: aiPriseResultStatusV2.optional(), rules_evaluated: z.array(evaluatedRiskRule).optional(), section_id: z.string().nullable().optional()});
export const riskInfo = z.object({scoring: riskInfoScoring.optional(), decisioning: riskInfoDecisioning.optional()});
export const personKYCInfo = z.object({verification_session_id: z.string().nullable().optional(), verification_result: z.string().nullable().optional(), risk_info: riskInfo.optional()});
export const verificationSessions = z.object({verification_session_id: z.string().optional(), result: z.string().optional(), created_at: z.number().int().nullable().optional()});
export const mediaFile = z.object({file_uuid: z.string().optional(), file_name: z.string().optional(), file_type: z.string().nullable().optional(), file_s3_url: z.string().optional()});
export const relatedPersonWithComputedFields = z.object({first_name: z.string().nullable().optional(), middle_name: z.string().nullable().optional(), last_name: z.string().nullable().optional(), full_name: z.string().nullable().optional(), birth_date: z.string().nullable().optional(), email: z.string().nullable().optional(), phone_number: z.string().nullable().optional(), address: extractedAddress.optional(), ownership_percent: z.number().nullable().optional(), person_reference_id: z.string().optional(), shares_allocated: z.number().int().nullable().optional(), roles: z.array(personRoleDetails).optional(), identity: outputIdentity.optional(), additional_fields: z.object({}).optional(), client_reference_id: z.string().optional(), client_reference_data: z.object({}).optional(), source: z.array(z.string()).optional(), added_via: z.string().nullable().optional(), kyc: personKYCInfo.optional(), verification_sessions: z.array(verificationSessions).nullable().optional(), questions_response: z.record(z.string(), questionGroup).optional(), documents: z.array(mediaFile).optional()});
export const profileAPIResultStatusV2 = z.enum(["APPROVED", "DECLINED", "REVIEW", "UNKNOWN", "DEACTIVATED"]);
export const iDType = z.enum(["NATIONAL_ID", "ID_CARD", "PASSPORT", "DRIVER_LICENSE", "RESIDENT_CARD", "VISA", "VOTER_ID", "TAX_ID", "COLOMBIA_PPT", "GHANA_CARD", "GHANA_SSNIT_CARD", "KENYA_ALIEN_CARD", "NATIONAL_ID_NUMBER", "PASSPORT_NUMBER", "BVN", "VOTER_ID_NUMBER", "DRIVER_LICENSE_NUMBER", "TAX_ID_NUMBER", "NIN", "SSN9", "SSN4", "SSNIT", "KRA_PIN", "ALIEN_CARD_NUMBER", "COLOMBIA_PPT_NUMBER", "GHANA_CARD_NUMBER"]);
export const documentDetails = z.object({mrz_data: z.record(z.string(), z.unknown()).nullable().optional(), barcode_data: z.record(z.string(), z.unknown()).nullable().optional(), ocr_data: z.record(z.string(), z.unknown()).nullable().optional()});
export const fieldDataInfoMatchtype = z.enum(["NIN", "CURP", "DRIVER_LICENSE", "VOTER_ID", "BVN", "PASSPORT", "AADHAAR", "PAN", "MRZ", "BARCODE", "SSNIT", "NATIONAL_ID", "RFC"]);
export const fieldInfo = z.object({matched: z.array(fieldDataInfoMatchtype).optional(), unmatched: z.array(fieldDataInfoMatchtype).optional()});
export const iDInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2, warnings: z.array(warningEntry).optional(), id_type: iDType.optional(), id_number: z.string().optional(), id_expiry_date: z.string().optional(), id_issue_date: z.string().optional(), first_name: z.string().optional(), middle_name: z.string().optional(), last_name: z.string().optional(), second_last_name: z.string().optional(), full_name: z.string().optional(), personal_number: z.string().optional(), birth_date: z.string().optional(), gender: z.string().optional(), nationality: z.string().optional(), nationality_code: z.string().optional(), issue_country: z.string().optional(), issue_country_code: z.string().optional(), issue_state: z.string().optional(), issue_state_code: z.string().optional(), address: extractedAddress.optional(), document_details: documentDetails.optional(), lookup_details: z.object({}).optional(), field_info: z.record(z.string(), fieldInfo).nullable().optional(), check_summary: z.object({}).optional(), section_id: z.string().optional()});
export const faceMatchInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2, warnings: z.array(warningEntry).optional(), face_match_score: z.number().gte(0).lte(100).nullable().optional(), check_summary: z.object({}).optional(), section_id: z.string().optional()});
export const faceLivenessInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2, warnings: z.array(warningEntry).optional(), source: z.string().nullable().optional(), check_summary: z.object({}).optional(), section_id: z.string().optional()});
export const lookupInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).nullable().optional(), result: aiPriseResultStatusV2.optional(), warnings: z.array(warningEntry).nullable().optional(), database_name: z.string().nullable().optional(), title: z.string().nullable().optional(), data: z.object({}).nullable().optional(), section_id: z.string().optional()});
export const domainInfo = z.object({domain_name: z.string().optional(), top_level_domain: z.string().optional(), registered: z.boolean().optional(), company_name: z.string().optional(), disposable: z.boolean().optional(), free_provider: z.boolean().optional(), dmarc_compliance: z.boolean().optional(), spf_strict: z.boolean().optional(), suspicious_top_level_domain: z.boolean().optional(), custom: z.boolean().optional()});
export const breach = z.object({platform_name: z.string().optional(), breach_date: z.string().optional(), domain_name: z.string().optional()});
export const personField = z.object({last_seen: z.string().optional(), valid_since: z.string().optional(), value: z.string().optional()});
export const personAddress = z.object({address_line_1: z.string().optional(), address_line_2: z.string().optional(), address_city: z.string().optional(), address_country: z.string().optional(), latitude: z.string().optional(), longitude: z.string().optional(), last_seen: z.string().optional(), postal_code: z.string().optional(), address_state: z.string().optional(), valid_since: z.string().optional()});
export const person = z.object({names: z.array(personField).optional(), genders: z.array(personField).optional(), date_of_births: z.array(personField).optional(), addresses: z.array(personAddress).optional(), email_address: personField.optional(), ip_addresses: z.array(personField).optional(), national_id: z.string().optional(), phone_number: z.string().optional()});
export const socialProfile = z.object({platform: z.string().nullable().optional(), registered: z.boolean().nullable().optional(), name: z.string().nullable().optional(), last_seen: z.string().nullable().optional(), account_id: z.string().nullable().optional()});
export const socialSummary = z.object({age_on_social: z.number().nullable().optional(), number_of_names_returned: z.number().nullable().optional(), number_of_photos_returned: z.number().nullable().optional(), registered_consumer_electronics_profiles: z.number().nullable().optional(), registered_ecommerce_profiles: z.number().nullable().optional(), registered_education_profiles: z.number().nullable().optional(), registered_email_provider_profiles: z.number().nullable().optional(), registered_entertainment_profiles: z.number().nullable().optional(), registered_financial_profiles: z.number().nullable().optional(), registered_messaging_profiles: z.number().nullable().optional(), registered_professional_profiles: z.number().nullable().optional(), registered_profiles: z.number().nullable().optional(), registered_social_media_profiles: z.number().nullable().optional(), registered_travel_profiles: z.number().nullable().optional()});
export const emailInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), email: z.string().nullable().optional(), email_tenure: z.number().optional(), domain_info: domainInfo.optional(), is_breached: z.boolean().optional(), no_of_breaches: z.number().int().optional(), first_breach: z.string().optional(), last_breach: z.string().optional(), breaches: z.array(breach).optional(), persons: z.array(person).optional(), social_profiles: z.array(socialProfile).optional(), social_summary: socialSummary.optional(), section_id: z.string().optional()});
export const portEvent = z.object({from_carrier: z.string().optional(), to_carrier: z.string().optional(), port_date: z.string().optional()});
export const phoneInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), phone_number: z.string().optional(), phone_valid: z.boolean().optional(), phone_type: z.string().optional(), phone_disposable: z.boolean().optional(), phone_active: z.string().optional(), activation_date: z.string().optional(), sim_type: z.string().optional(), country: z.string().optional(), original_carrier: z.string().optional(), current_carrier: z.string().optional(), port_history: z.array(portEvent).optional(), phone_is_spam: z.boolean().optional(), social_profiles: z.array(socialProfile).optional(), persons: z.array(person).optional(), section_id: z.string().optional()});
export const iPLocation = z.object({country: z.string().optional(), country_code: z.string().optional(), region: z.string().optional(), city: z.string().optional(), latitude: z.number().optional(), longitude: z.number().optional(), postal_code: z.string().optional(), timezone: z.string().optional(), geo_name_id: z.number().int().optional()});
export const vPNInfo = z.object({confidence: z.string().nullable().optional(), origin_timezone: z.string().nullable().optional(), origin_country: z.string().nullable().optional(), timezone_mismatch: z.boolean().nullable().optional(), public_vpn: z.boolean().nullable().optional(), auxiliary_mobile: z.boolean().nullable().optional(), os_mismatch: z.boolean().nullable().optional(), relay: z.boolean().nullable().optional(), ml_prediction: z.boolean().nullable().optional(), vpn_ml_score: z.number().nullable().optional()});
export const iPInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), location: iPLocation.optional(), internet_service_provider: z.string().optional(), connection_type: z.string().optional(), autonomous_system_number: z.number().int().optional(), organization: z.string().optional(), is_crawler: z.boolean().optional(), host: z.string().optional(), proxy: z.boolean().optional(), vpn: z.boolean().optional(), vpn_info: vPNInfo.optional(), tor: z.boolean().optional(), active_vpn: z.boolean().optional(), active_tor: z.boolean().optional(), recent_abuse: z.boolean().optional(), bot_status: z.boolean().optional(), abuse_velocity: z.string().optional(), unique_hash: z.string().optional(), ip_address: z.string().optional(), section_id: z.string().optional()});
export const deviceInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), browser_name: z.string().optional(), browser_major_version: z.string().optional(), browser_full_version: z.string().optional(), os: z.string().optional(), os_version: z.string().optional(), device: z.string().optional(), user_agent: z.string().optional(), incognito: z.boolean().optional(), bot_status: z.boolean().optional(), bot_type: z.string().optional(), privacy_settings: z.boolean().optional(), section_id: z.string().optional()});
export const relatedSession = z.object({result: aiPriseAPIResultStatusV2.optional(), status: aiPriseRunStatusV2.optional(), created_at: z.number().int().optional(), relation: z.string().optional(), verification_session_id: z.string().optional()});
export const relatedSessionInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), related_sessions: z.array(relatedSession).optional(), section_id: z.string().optional()});
export const geolocationInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), latitude: z.number().optional(), longitude: z.number().optional(), accuracy: z.string().optional(), altitude: z.string().optional(), altitude_accuracy: z.string().optional(), heading: z.string().optional(), speed: z.string().optional(), section_id: z.string().optional()});
export const fraudInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), email_insights: z.array(emailInsights).optional(), phone_insights: z.array(phoneInsights).optional(), ip_insights: iPInsights.optional(), device_insights: deviceInsights.optional(), related_session_insights: relatedSessionInsights.optional(), geolocation_insights: geolocationInsights.optional(), section_id: z.string().optional()});
export const additionalInfoType = z.enum(["KBA", "KENYA_KRA_PIN", "BANK_STATEMENT_DOCUMENT", "BUSINESS_REGISTRATION_DOCUMENT", "OPERATING_LICENSE_DOCUMENT", "SOURCE_OF_FUNDS_DOCUMENT", "VISA_DOCUMENT", "US_AAMVA", "AADHAAR_DOCUMENT_FRONT", "AADHAAR_DOCUMENT_BACK", "USER_SELFIE", "GENDER", "SEON_SESSION_PAYLOAD", "ADDRESS_PROOF_DOCUMENT", "NIGERIA_BVN_NUMBER", "TAX_IDENTIFICATION_NUMBER", "PREVIOUS_VERIFICATION_SESSION_ID", "FRAUD_CHECK_DOCUMENT", "OPERATION_CARD", "TRANSPORTATION_PERMIT", "VEHICLE_OWNERSHIP_CARD", "TAX_CERTIFICATE", "OTHER"]);
export const additionalInfoResponseType = z.enum(["ID_INFO", "LOOKUP_DATA", "ADDRESS_VERIFICATION", "DOCUMENT_INSIGHTS"]);
export const pOADocumentCategory = z.enum(["FINANCIAL_STATEMENT", "UTILITY_BILL", "GOVERNMENT_LETTER", "INSURANCE_DOCUMENT", "TENANCY_AGREEMENT", "EMPLOYMENT_DOCUMENT", "NATIONAL_ID", "UNKNOWN"]);
export const documentMetadata = z.object({producer: z.string().optional(), creator: z.string().optional(), creation_date: z.string().optional(), modification_date: z.string().optional(), author: z.string().optional(), title: z.string().optional(), keywords: z.array(z.string()).optional(), subject: z.string().optional()});
export const addressVerificationIndicator = z.object({id: z.string().optional(), category: z.string().optional(), title: z.string().optional(), description: z.string().optional(), indicator_attributes: z.object({}).optional(), metadata: z.object({}).optional()});
export const validationRuleExecutionResult = z.object({evidence: z.array(z.string()).optional(), order_number: z.number().optional(), reasoning: z.string().optional(), result: z.string().optional(), rule_id: z.string().optional(), rule_text: z.string().optional(), severity: z.string().optional()});
export const validationRulesOverallOutcome = z.enum(["APPROVED", "REVIEW", "DECLINED", "NOT_EVALUATED"]);
export const validationRulesExecutionResponse = z.object({rules: z.array(validationRuleExecutionResult).optional(), overall_outcome: validationRulesOverallOutcome.optional(), overall_outcome_reason: z.string().optional()});
export const addressVerificationInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), extracted_address: extractedAddress.optional(), document_issue_date: z.string().nullable().optional(), document_expiry_date: z.string().nullable().optional(), first_name: z.string().nullable().optional(), middle_name: z.string().nullable().optional(), last_name: z.string().nullable().optional(), full_name: z.string().nullable().optional(), name_match: z.boolean().nullable().optional(), address_match: z.boolean().nullable().optional(), translated_full_name: z.string().nullable().optional(), translated_extracted_address: extractedAddress.optional(), translation_language: z.string().nullable().optional(), document_type: z.string().nullable().optional(), poa_document_category: pOADocumentCategory.optional(), section_id: z.string().optional(), document_class_id: z.string().optional(), document_class_type: z.string().optional(), document_metadata: documentMetadata.optional(), info_indicators: z.array(addressVerificationIndicator).optional(), risk_indicators: z.array(addressVerificationIndicator).optional(), trust_indicators: z.array(addressVerificationIndicator).optional(), validation_rules_execution_response: validationRulesExecutionResponse.optional()});
export const documentInsightsIndicator = z.object({id: z.string().optional(), category: z.string().optional(), title: z.string().optional(), description: z.string().optional(), indicator_attributes: z.object({}).optional(), metadata: z.object({}).optional()});
export const documentInsights = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), info_indicators: z.array(documentInsightsIndicator).optional(), risk_indicators: z.array(documentInsightsIndicator).optional(), trust_indicators: z.array(documentInsightsIndicator).optional(), document_metadata: documentMetadata.optional(), document_class_id: z.string().optional(), document_class_type: z.string().optional(), document_class_variant: z.string().optional(), section_id: z.string().optional(), document_data: z.record(z.string(), z.unknown()).optional()});
export const additionalInfoBlob = z.object({additional_info_type: z.union([additionalInfoType, businessAdditionalInfoType]).optional(), additional_info_response_type: additionalInfoResponseType.optional(), data: z.union([iDInfo, addressVerificationInfo, documentInsights, z.object({})]).optional()});
export const companyRoleDetails = z.object({name: z.string().nullable().optional(), start_date: z.string().nullable().optional(), end_date: z.string().nullable().optional(), is_active: z.boolean().nullable().optional(), normalised_name: normalisedRole.optional()});
export const relatedEntityOtherRelationshipData = z.object({source_name: z.string().optional(), source_id: z.string().optional(), relationship_type: z.string().optional(), ownership_percent: z.number().nullable().optional(), shares_allocated: z.number().int().nullable().optional(), roles: z.union([z.array(companyRoleDetails), z.array(personRoleDetails)]).optional()});
export const relatedPersonInfoV2 = z.object({person_reference_id: z.string().optional(), user_profile: z.object({user_profile_id: z.string().optional(), first_name: z.string().nullable().optional(), middle_name: z.string().nullable().optional(), last_name: z.string().nullable().optional(), second_last_name: z.string().nullable().optional(), full_name: z.string().nullable().optional(), address: address.optional(), date_of_birth: z.string().optional(), email_address: z.string().optional(), phone_number: z.string().optional(), phone_number_parts: z.object({countryCode: z.string().nullable().optional(), phoneCode: z.string().nullable().optional(), number: z.string().nullable().optional()}).nullable().optional(), client_reference_id: z.string().optional(), client_reference_data: z.object({}).optional(), verification_session_ids: z.array(z.string()).optional(), user_profile_result: profileAPIResultStatusV2.optional(), questions_response: z.record(z.string(), questionGroup).optional(), events_callback_url: z.string().optional(), risk_info: riskInfo.optional(), id_info: iDInfo.optional(), face_match_info: faceMatchInfo.optional(), face_liveness_info: faceLivenessInfo.optional(), lookup_info: z.array(lookupInfo).optional(), aml_info: aMLInfo.optional(), fraud_insights: fraudInsights.optional(), additional_information: z.array(additionalInfoBlob).optional(), created_at: z.number().int().optional(), updated_at: z.number().int().optional(), source: z.array(z.string()).nullable().optional(), added_via: z.string().nullable().optional()}).optional(), ownership_percent: z.number().nullable().optional(), shares_allocated: z.number().int().nullable().optional(), roles: z.array(personRoleDetails).optional(), additional_fields: z.object({}).optional(), other_relationship_data: z.array(relatedEntityOtherRelationshipData).optional()});
export const companyKYBInfo = z.object({verification_session_id: z.string().nullable().optional(), verification_result: z.string().nullable().optional(), risk_info: riskInfo.optional()});
export const relatedCompanyWithComputedFields = z.object({company_reference_id: z.string().nullable().optional(), name: z.string().nullable().optional(), country_code: z.string().nullable().optional(), status: z.string().nullable().optional(), description: z.string().nullable().optional(), addresses: z.array(extractedAddress).nullable().optional(), ownership_percent: z.number().nullable().optional(), shares_allocated: z.number().int().nullable().optional(), alternate_name: z.string().nullable().optional(), tax_identification_number: z.string().nullable().optional(), formation_date: z.string().optional(), website: z.string().nullable().optional(), state_code: z.string().nullable().optional(), business_entity_id: z.string().nullable().optional(), roles: z.array(companyRoleDetails).nullable().optional(), phone_numbers: z.array(z.string()).nullable().optional(), additional_fields: z.object({}).nullable().optional(), email_addresses: z.array(z.string()).nullable().optional(), client_reference_id: z.string().optional(), client_reference_data: z.object({}).optional(), source: z.array(z.string()).optional(), added_via: z.string().nullable().optional(), kyb: companyKYBInfo.optional(), verification_sessions: z.array(verificationSessions).nullable().optional(), questions_response: z.record(z.string(), questionGroup).optional(), documents: z.array(mediaFile).optional()});
export const createBusinessProfileAdditionalInfoItem = z.object({additional_info_type: businessAdditionalInfoType.optional(), additional_info_data: z.union([z.string(), z.object({file_data: z.string()})]).optional()});
export const createBusinessProfileAdditionalInformation = z.array(createBusinessProfileAdditionalInfoItem);
export const relatedEntityRelationshipType = z.enum(["PARENT", "CHILD", "SIBLING", "UNKNOWN"]).nullable();
export const relatedCompanyInfoV2 = z.object({company_reference_id: z.string().optional(), business_profile: z.object({name: z.string().optional(), alternate_name: z.string().optional(), tax_identification_number: z.string().optional(), website: z.string().optional(), formation_date: z.string().optional(), country_code: z.string().optional(), state_code: z.string().optional(), business_entity_id: z.string().optional(), addresses: z.array(address).optional(), phone_numbers: z.array(z.string()).optional(), email_addresses: z.array(z.string()).optional(), additional_information: createBusinessProfileAdditionalInformation.optional(), client_reference_id: z.string().optional(), client_reference_data: z.object({}).optional(), callback_url: z.string().optional(), events_callback_url: z.string().optional(), tags: z.array(z.string()).optional(), business_profile_id: z.string().optional(), business_profile_result: aiPriseAPIResultStatusV2.optional(), questions_response: z.record(z.string(), questionGroup).optional(), risk_info: riskInfo.optional(), created_at: z.number().int().optional(), source: z.array(z.string()).nullable().optional(), added_via: z.string().nullable().optional()}).optional(), ownership_percent: z.number().nullable().optional(), shares_allocated: z.number().int().nullable().optional(), roles: z.array(companyRoleDetails).optional(), additional_fields: z.object({}).optional(), relationship_type: relatedEntityRelationshipType.optional(), other_relationship_data: z.array(relatedEntityOtherRelationshipData).optional()});
export const websiteFinancials = z.object({funding_amount: z.string().nullable().optional(), revenue_amount: z.string().nullable().optional(), net_income: z.string().nullable().optional(), debtToEquity: z.string().nullable().optional(), marketCapitalization: z.string().nullable().optional()});
export const websiteDomainInfo = z.object({name: z.string().optional(), registrar: z.string().optional(), registrar_country: z.string().optional(), registration_date: z.string().optional(), last_update_date: z.string().optional(), expiration_date: z.string().optional(), has_robots_txt: z.boolean().optional(), is_known_free_email_host: z.boolean().optional(), is_known_hosting_provider_domain: z.boolean().optional(), is_known_marketplace_domain: z.boolean().optional(), is_known_social_media_domain: z.boolean().optional(), is_known_top_domain: z.boolean().optional(), is_non_business: z.boolean().optional(), is_parked: z.boolean().optional(), is_registered: z.boolean().optional(), is_resolvable: z.boolean().optional(), is_ssl_valid: z.boolean().optional(), is_webserver_responsive: z.boolean().optional(), domain_history: z.array(z.string()).optional(), hosting_provider: z.string().optional(), hosting_provider_category: z.string().optional(), supports_apex_and_www: z.boolean().optional(), inbound_linking_domains: z.number().int().optional(), whois_privacy_mode: z.string().optional(), domain_age: z.number().int().optional(), dns_address_status: z.string().optional(), ns_status: z.string().optional(), DNS_records: z.array(z.string()).optional(), tech_stack_used: z.array(z.string()).optional()});
export const industryInfo = z.object({additional_mcc_codes: z.array(z.object({code: z.string().optional(), description: z.string().optional()})).optional(), additional_naics_codes: z.array(z.object({code: z.string().optional(), description: z.string().optional()})).optional(), additional_sic_codes: z.array(z.object({code: z.string().optional(), description: z.string().optional()})).optional(), primary_industry: z.string().optional(), primary_mcc: z.object({code: z.string().optional(), description: z.string().optional()}).optional(), primary_naics: z.object({code: z.string().optional(), description: z.string().optional()}).optional(), primary_sic: z.object({code: z.string().optional(), description: z.string().optional()}).optional(), high_risk_industry_contexts: z.array(z.object({industry: z.string().optional(), context: z.string().optional(), url: z.string().optional(), role: z.string().optional(), confidence: z.string().optional()})).optional(), prohibited_industry_contexts: z.array(z.object({industry: z.string().optional(), context: z.string().optional(), url: z.string().optional(), role: z.string().optional(), confidence: z.string().optional()})).optional(), tags: z.array(z.string()).optional(), primary_risky_industry_flag: z.boolean().optional(), additional_risky_industry_flag: z.boolean().optional()});
export const riskFactors = z.object({category: z.string().optional(), classification_type: z.string().optional(), description: z.string().optional(), risk_element_name: z.string().optional(), display_name: z.string().optional(), score: z.number().optional(), subcategory: z.string().optional()});
export const instagramPostSummary = z.object({id: z.string().nullable().optional(), type: z.string().nullable().optional(), caption: z.string().nullable().optional(), url: z.string().nullable().optional(), likes_count: z.number().int().nullable().optional(), comments_count: z.number().int().nullable().optional(), video_view_count: z.number().int().nullable().optional(), timestamp: z.string().nullable().optional()});
export const instagramProfileInsights = z.object({username: z.string().nullable().optional(), full_name: z.string().nullable().optional(), biography: z.string().nullable().optional(), url: z.string().nullable().optional(), external_url: z.string().nullable().optional(), followers_count: z.number().int().nullable().optional(), follows_count: z.number().int().nullable().optional(), posts_count: z.number().int().nullable().optional(), is_business_account: z.boolean().nullable().optional(), is_verified: z.boolean().nullable().optional(), is_private: z.boolean().nullable().optional(), profile_pic_url: z.string().nullable().optional(), business_category_name: z.string().nullable().optional(), latest_posts: z.array(instagramPostSummary).optional()});
export const facebookLinkedInstagram = z.object({username: z.string().nullable().optional(), url: z.string().nullable().optional()});
export const facebookPageInsights = z.object({username: z.string().nullable().optional(), full_name: z.string().nullable().optional(), biography: z.string().nullable().optional(), url: z.string().nullable().optional(), external_url: z.string().nullable().optional(), followers_count: z.number().int().nullable().optional(), follows_count: z.number().int().nullable().optional(), is_business_account: z.boolean().nullable().optional(), business_category_name: z.string().nullable().optional(), business_address: extractedAddress.optional(), profile_pic_url: z.string().nullable().optional(), likes_count: z.number().int().nullable().optional(), business_categories: z.array(z.string()).nullable().optional(), business_hours: z.string().nullable().optional(), price_range: z.string().nullable().optional(), phone: z.string().nullable().optional(), email: z.string().nullable().optional(), cover_photo_url: z.string().nullable().optional(), rating_overall: z.number().int().nullable().optional(), rating_count: z.number().int().nullable().optional(), rating_description: z.string().nullable().optional(), services: z.string().nullable().optional(), creation_date: z.string().nullable().optional(), ad_status: z.string().nullable().optional(), is_ad_library_active: z.boolean().nullable().optional(), linked_instagram: z.array(facebookLinkedInstagram).nullable().optional(), alternative_social_media: z.string().nullable().optional(), websites: z.array(z.string()).nullable().optional(), info: z.array(z.string()).nullable().optional(), messenger: z.string().nullable().optional()});
export const linkedInKeyPerson = z.object({name: z.string().nullable().optional(), linkedin_profile_url: z.string().nullable().optional(), designation: z.string().nullable().optional(), profile_image_url: z.string().nullable().optional()});
export const linkedInKeyPeopleInsights = z.object({key_people: z.array(linkedInKeyPerson).nullable().optional(), total_count: z.number().int().nullable().optional()});
export const linkedInCompanyInsights = z.object({username: z.string().nullable().optional(), full_name: z.string().nullable().optional(), biography: z.string().nullable().optional(), url: z.string().nullable().optional(), external_url: z.string().nullable().optional(), followers_count: z.number().int().nullable().optional(), follows_count: z.number().int().nullable().optional(), is_business_account: z.boolean().nullable().optional(), business_category_name: z.string().nullable().optional(), business_address: extractedAddress.optional(), profile_pic_url: z.string().nullable().optional(), tagline: z.string().nullable().optional(), phone: z.string().nullable().optional(), specialties: z.array(z.string()).nullable().optional(), industries: z.array(z.string()).nullable().optional(), hashtags: z.array(z.string()).nullable().optional(), employee_count: z.number().int().nullable().optional(), employee_count_range: z.string().nullable().optional(), founded_year: z.number().int().nullable().optional(), is_verified: z.boolean().nullable().optional(), logo_url: z.string().nullable().optional(), cover_url: z.string().nullable().optional(), funding_total_rounds: z.number().int().nullable().optional(), funding_latest_type: z.string().nullable().optional(), funding_latest_date: z.string().nullable().optional(), funding_latest_url: z.string().nullable().optional(), funding_latest_investors_count: z.number().int().nullable().optional(), crunchbase_url: z.string().nullable().optional(), key_people: linkedInKeyPeopleInsights.optional()});
export const socialMediaInsights = z.object({instagram: instagramProfileInsights.optional(), facebook: facebookPageInsights.optional(), linkedin: linkedInCompanyInsights.optional()});
export const policyEntry = z.object({policy_type: z.string().optional(), policy_url: z.string().optional(), policy_text: z.string().optional()});
export const websiteContentPhoneInfo = z.object({number: z.string().optional(), is_verified: z.boolean().optional(), country_code: z.string().optional()});
export const websiteContentEmailInfo = z.object({email: z.string().optional(), is_verified: z.boolean().optional()});
export const websiteContentAddressInfo = z.object({address: extractedAddress.optional(), is_verified: z.boolean().optional()});
export const websiteContent = z.object({description: z.string().optional(), evaluated_url: z.string().optional(), title: z.string().optional(), real_website: z.enum(["YES", "PARKED", "NO"]).optional(), compliance: z.array(z.string()).optional(), harmful_content: z.boolean().optional(), industries: z.array(z.string()).optional(), language: z.string().optional(), mlm_links: z.array(z.string()).optional(), number_of_bad_policies: z.number().int().optional(), number_of_mlm_links: z.number().int().optional(), pages_linked: z.number().int().optional(), policy_analysis: z.array(policyEntry).optional(), customers: z.array(z.string()).optional(), phone_numbers: z.array(websiteContentPhoneInfo).optional(), email: z.array(websiteContentEmailInfo).optional(), addresses: z.array(websiteContentAddressInfo).optional(), screenshot_url: z.string().optional(), historic_screenshots_urls_and_timestamps: z.array(z.object({url: z.string().optional(), timestamp: z.number().optional()})).optional(), is_website_authentic: z.boolean().optional(), website_authenticity_reasoning: z.string().optional(), keyword_contexts: z.array(z.object({keyword: z.string().optional(), context: z.string().optional(), url: z.string().optional()})).optional(), summary_notes: z.string().optional(), has_placeholder_text: z.boolean().optional(), content_inconsistencies: z.array(z.string()).optional(), has_stock_images: z.string().optional(), deadlinks: z.array(z.string()).optional(), blog_or_news_last_updated_date: z.string().optional(), website_last_updated_date: z.string().optional()});
export const trafficInfo = z.object({visits_per_month: z.number().optional(), time_on_site: z.number().optional(), pages_per_visit: z.number().optional(), bounce_rate: z.number().optional(), traffic_trends: z.object({}).optional(), traffic_by_country: z.object({}).optional(), traffic_by_source: z.object({}).optional(), top_organic_keywords: z.array(z.string()).optional()});
export const websiteRiskIndicator = z.object({indicator: z.string().optional(), detail: z.string().optional(), severity: z.enum(["low", "medium", "high"]).optional(), evidence: z.string().optional()});
export const networkEdge = z.object({from: z.string().optional(), to: z.string().optional(), association_type: z.string().optional(), association_detail: z.string().optional(), first_seen: z.string().optional()});
export const associatedNetwork = z.object({domains: z.array(z.string()).optional(), edges: z.array(networkEdge).optional()});
export const networkIntelligenceTag = z.object({id: z.number().int().optional(), tag: z.string().nullable().optional()});
export const fieldEvidence = z.object({reasoning: z.string().nullable().optional(), confidence: z.string().nullable().optional(), citations: z.array(z.string()).nullable().optional()});
export const networkIntelligence = z.object({associated_networks: z.array(associatedNetwork).optional(), taint_status: z.enum(["FRAUD", "NOT_FRAUD", "UNKNOWN", "null"]).nullable().optional(), network_intelligence_tags: z.array(networkIntelligenceTag).nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional(), summary: z.string().nullable().optional()});
export const websiteInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), site_status: z.string().nullable().optional(), url: z.string().nullable().optional(), title: z.string().nullable().optional(), description: z.string().nullable().optional(), domain_creation_date: z.string().nullable().optional(), domain_expiration_date: z.string().nullable().optional(), truebiz_request_id: z.string().nullable().optional(), section_id: z.string().optional(), average_review: z.string().nullable().optional(), interactions_of_interest: z.array(z.object({link: z.string().optional(), snippet: z.string().optional()})).optional(), adverse_media: z.array(z.object({link: z.string().optional(), snippet: z.string().optional()})).optional(), critically_concerning_issues: z.array(z.string()).optional(), estimated_employee_count_range: z.string().nullable().optional(), is_public: z.boolean().nullable().optional(), financial_info: websiteFinancials.optional(), domain_info: websiteDomainInfo.optional(), name: z.string().optional(), founded_year: z.string().nullable().optional(), formation_type: z.string().optional(), industry_info: industryInfo.optional(), risk_factors: z.array(riskFactors).optional(), social_media_profiles: z.array(z.string()).optional(), social_media_insights: socialMediaInsights.optional(), website_content: websiteContent.optional(), traffic_info: trafficInfo.optional(), backlinks: z.array(z.object({url: z.string().optional(), inline_rank: z.number().int().optional()})).optional(), total_backlinks: z.number().int().nullable().optional(), web_presence_report_summary: z.string().nullable().optional(), web_presence_report_summary_checklist: z.array(z.object({section: z.string().optional(), result: z.string().optional(), message: z.string().optional()})).optional(), industry_inconsistencies: z.array(z.string()).optional(), social_media_profiles_referring_to_different_business: z.array(z.string()).optional(), risk_indicators: z.array(websiteRiskIndicator).optional(), network_intelligence: networkIntelligence.optional()});
export const checklistEntry = z.object({section: z.string().nullable().optional(), result: z.string().nullable().optional(), message: z.string().nullable().optional()});
export const financialInfoV2 = z.object({status: z.string().nullable().optional(), estimated_annual_revenue_range: z.string().nullable().optional(), funding_amount: z.string().nullable().optional(), net_income: z.string().nullable().optional(), debt_to_equity: z.string().nullable().optional(), market_capitalization: z.string().nullable().optional()});
export const companyProfile = z.object({status: z.string().nullable().optional(), description: z.string().nullable().optional(), founded_year: z.number().int().nullable().optional(), estimated_employee_count_range: z.string().nullable().optional(), financial_info: financialInfoV2.optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const webPresenceDomainInfo = z.object({status: z.string().nullable().optional(), registrar: z.string().nullable().optional(), registrar_country: z.string().nullable().optional(), registration_date: z.string().nullable().optional(), last_update_date: z.string().nullable().optional(), expiration_date: z.string().nullable().optional(), domain_age: z.number().int().nullable().optional(), is_registered: z.boolean().nullable().optional(), is_resolvable: z.boolean().nullable().optional(), whois_privacy_mode: z.string().nullable().optional(), is_known_free_email_host: z.boolean().nullable().optional(), is_known_social_media_domain: z.boolean().nullable().optional(), is_known_marketplace_domain: z.boolean().nullable().optional(), is_known_top_domain: z.boolean().nullable().optional(), is_known_hosting_provider_domain: z.boolean().nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const webserverInfo = z.object({status: z.string().nullable().optional(), hosting_provider: z.string().nullable().optional(), hosting_provider_category: z.string().nullable().optional(), is_ssl_valid: z.boolean().nullable().optional(), is_parked: z.boolean().nullable().optional(), dns_address_status: z.string().nullable().optional(), nameserver_status: z.string().nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const screenshot = z.object({url: z.string().nullable().optional(), timestamp: z.string().nullable().optional(), is_current: z.boolean().nullable().optional()});
export const keywordMatch = z.object({id: z.number().int().optional(), keyword: z.string().nullable().optional(), snippet: z.string().nullable().optional()});
export const policyEntryV2 = z.object({id: z.number().int().optional(), policy_type: z.string().nullable().optional(), policy_url: z.string().nullable().optional(), policy_summary: z.string().nullable().optional()});
export const websiteContentV2 = z.object({status: z.string().nullable().optional(), evaluated_url: z.string().nullable().optional(), title: z.string().nullable().optional(), language: z.string().nullable().optional(), website_content_availability: z.string().nullable().optional(), num_pages_linked_from_homepage: z.number().int().nullable().optional(), screenshots: z.array(screenshot).nullable().optional(), has_placeholder_text: z.boolean().nullable().optional(), associated_brands: z.array(z.string()).nullable().optional(), website_url_and_business_name_mismatch: z.boolean().nullable().optional(), business_description_mismatch: z.boolean().nullable().optional(), business_type: z.string().nullable().optional(), matched_keywords: z.array(keywordMatch).nullable().optional(), policies: z.array(policyEntryV2).nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const trafficInfoV2 = z.object({status: z.string().nullable().optional(), bounce_rate: z.number().nullable().optional(), pages_per_visit: z.number().nullable().optional(), time_on_site: z.number().nullable().optional(), top_organic_keywords: z.array(z.string()).nullable().optional(), traffic_by_country: z.object({}).nullable().optional(), traffic_by_source: z.object({}).nullable().optional(), traffic_trends: z.object({}).nullable().optional()});
export const contactPhone = z.object({number: z.string().nullable().optional(), country_code: z.string().nullable().optional(), is_primary: z.boolean().nullable().optional(), is_verified: z.boolean().nullable().optional(), is_phone_disposable: z.boolean().nullable().optional(), source: z.string().nullable().optional()});
export const contactEmail = z.object({email: z.string().nullable().optional(), is_primary: z.boolean().nullable().optional(), is_verified: z.boolean().nullable().optional(), is_email_disposable: z.boolean().nullable().optional(), source: z.string().nullable().optional()});
export const contactAddress = z.object({address: extractedAddress.optional(), is_primary: z.boolean().nullable().optional(), is_verified: z.boolean().nullable().optional(), latitude: z.number().nullable().optional(), longitude: z.number().nullable().optional(), place_type: z.string().nullable().optional(), rating: z.number().nullable().optional(), reviews: z.number().int().nullable().optional(), business_count_at_address: z.number().int().nullable().optional()});
export const contactInformation = z.object({status: z.string().nullable().optional(), phone_numbers: z.array(contactPhone).nullable().optional(), email_addresses: z.array(contactEmail).nullable().optional(), addresses: z.array(contactAddress).nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const industryCode = z.object({id: z.number().int().optional(), code: z.string().nullable().optional(), description: z.string().nullable().optional(), is_primary: z.boolean().nullable().optional()});
export const industryMatch = z.object({id: z.number().int().optional(), industry_matched: z.string().nullable().optional(), role: z.string().nullable().optional(), level: z.string().nullable().optional()});
export const industryInfoV2 = z.object({status: z.string().nullable().optional(), primary_industry: z.string().nullable().optional(), naics_codes: z.array(industryCode).nullable().optional(), sic_codes: z.array(industryCode).nullable().optional(), mcc_codes: z.array(industryCode).nullable().optional(), matched_industries: z.array(industryMatch).nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const backlinkEntry = z.object({inline_rank: z.number().int().nullable().optional(), url: z.string().nullable().optional()});
export const backlinksInformation = z.object({status: z.string().nullable().optional(), total_backlinks: z.number().int().nullable().optional(), backlinks: z.array(backlinkEntry).nullable().optional()});
export const mediaEntry = z.object({id: z.number().int().optional(), title: z.string().nullable().optional(), url: z.string().nullable().optional()});
export const onlineReviewInformation = z.object({status: z.string().nullable().optional(), average_review: z.string().nullable().optional(), critically_concerning_issues: z.array(z.string()).nullable().optional(), adverse_media: z.array(mediaEntry).nullable().optional(), interactions_of_interest: z.array(mediaEntry).nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const externalTrustSignal = z.object({status: z.string().nullable().optional(), source: z.string().nullable().optional(), source_url: z.string().nullable().optional(), trust_score: z.number().int().nullable().optional()});
export const socialMediaProfileV2 = z.object({id: z.number().int().optional(), status: z.string().nullable().optional(), url: z.string().nullable().optional(), is_broken: z.boolean().nullable().optional(), platform: z.string().nullable().optional(), account_creation_date: z.string().nullable().optional(), followers_count: z.number().int().nullable().optional(), following_count: z.number().int().nullable().optional(), post_count: z.number().int().nullable().optional(), is_verified: z.boolean().nullable().optional(), is_running_ads: z.boolean().nullable().optional(), recent_posts: z.array(z.object({})).nullable().optional(), additional_fields: z.object({}).nullable().optional()});
export const marketplaceInfo = z.object({status: z.string().nullable().optional(), is_marketplace: z.boolean().nullable().optional(), is_fraudulent_marketplace: z.boolean().nullable().optional(), fake_reviews_detected: z.boolean().nullable().optional(), fake_seller_indicators_detected: z.boolean().nullable().optional(), generic_product_content_detected: z.boolean().nullable().optional(), incoherent_product_catalog_detected: z.boolean().nullable().optional(), unrealistic_pricing_detected: z.boolean().nullable().optional(), urgency_manipulation_detected: z.boolean().nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const paymentFlowInfo = z.object({status: z.string().nullable().optional(), payment_forms_detected: z.boolean().nullable().optional(), checkout_flow_detected: z.boolean().nullable().optional(), product_listings_detected: z.boolean().nullable().optional(), payment_providers: z.array(z.string()).nullable().optional(), only_irreversible_payment_methods: z.boolean().nullable().optional(), field_evidence_log: z.record(z.string(), fieldEvidence).nullable().optional()});
export const deltaUpdate = z.object({path: z.string().optional(), operation: z.enum(["UPDATED", "ADDED", "REMOVED"]).optional()});
export const deltaFromPreviousSession = z.object({summary: z.string().nullable().optional(), updates: z.array(deltaUpdate).nullable().optional()}).nullable();
export const websiteInfoV2 = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), section_id: z.string().optional(), input_url: z.string().nullable().optional(), business_name: z.string().nullable().optional(), report_summary: z.string().nullable().optional(), report_checklist: z.array(checklistEntry).nullable().optional(), risk_indicators: z.array(websiteRiskIndicator).nullable().optional(), company_profile: companyProfile.optional(), domain_info: webPresenceDomainInfo.optional(), webserver_info: webserverInfo.optional(), website_content: websiteContentV2.optional(), traffic_info: trafficInfoV2.optional(), contact_information: contactInformation.optional(), industry_info: industryInfoV2.optional(), backlinks_information: backlinksInformation.optional(), online_review_information: onlineReviewInformation.optional(), external_trust_signals: z.array(externalTrustSignal).nullable().optional(), social_media_profiles: z.array(socialMediaProfileV2).nullable().optional(), network_intelligence: networkIntelligence.optional(), marketplace_info: marketplaceInfo.optional(), paymentflow_info: paymentFlowInfo.optional(), delta_from_previous_session: deltaFromPreviousSession.optional(), version: z.string().optional()});
export const relatedPersonInfo = z.object({first_name: z.string().nullable().optional(), middle_name: z.string().nullable().optional(), last_name: z.string().nullable().optional(), full_name: z.string().nullable().optional(), birth_date: z.string().nullable().optional(), email: z.string().nullable().optional(), phone_number: z.string().nullable().optional(), address: extractedAddress.optional(), ownership_percent: z.number().nullable().optional(), person_reference_id: z.string().optional(), shares_allocated: z.number().int().nullable().optional(), roles: z.array(personRoleDetails).optional(), identity: outputIdentity.optional(), additional_fields: z.object({}).optional(), client_reference_id: z.string().optional(), client_reference_data: z.object({}).optional(), source: z.array(z.string()).optional(), added_via: z.string().nullable().optional()});
export const onlinePresenceInfo = z.object({status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), result: aiPriseAPIResultStatusV2.optional(), warnings: z.array(warningEntry).optional(), section_id: z.string().optional(), company_data: z.object({}).optional(), name: z.string().optional(), formation_date: z.string().optional(), website: z.string().optional(), address: extractedAddress.optional(), ubos: z.array(relatedPersonInfo).optional(), tax_identification_number: z.string().optional(), business_entity_id: z.string().optional()});
export const eventInfo = z.object({date: z.string().nullable().optional(), event_type: z.string().nullable().optional(), metadata: z.object({}).nullable().optional()});
export const companySummary = z.object({name: z.string().nullable().optional(), status: z.string().nullable().optional(), url: z.string().nullable().optional(), addresses: z.array(extractedAddress).optional(), business_id: z.string().nullable().optional()});
export const aMLMonitoringUpdate = z.object({added_entity_hits: z.array(entityHit).nullable().optional(), removed_entity_hits: z.array(entityHit).nullable().optional(), updated_entity_hits: z.array(entityHit).nullable().optional(), created_at: z.number().nullable().optional()});
export const aiPriseBusinessVerificationResponseV2 = z.object({verification_session_id: z.string().optional(), template_id: z.string().optional(), client_reference_id: z.string().nullable().optional(), client_reference_data: z.object({}).nullable().optional(), created_at: z.number().int().optional(), aiprise_summary: aiPriseResponseSummaryV2.optional(), status: aiPriseRunStatusV2.optional(), status_reasons: z.array(statusReasonCodeEntry).optional(), aml_info: aMLInfo.optional(), business_input: z.object({business_data: businessDataWithComputedFields.optional(), additional_info: businessAdditionalInfo.optional()}).optional(), business_info: businessInfo.optional(), registration_info: registrationInfo.optional(), related_persons: z.array(z.union([relatedPersonWithComputedFields, relatedPersonInfoV2])).optional(), related_companies: z.array(z.union([relatedCompanyWithComputedFields, relatedCompanyInfoV2])).optional(), website_info: z.union([websiteInfo, websiteInfoV2]).optional(), online_presence_info: onlinePresenceInfo.optional(), events: z.array(eventInfo).optional(), lookup_info: z.array(lookupInfo).optional(), time_elapsed_to_process: z.string().optional(), time_elapsed_to_complete_session: z.string().optional(), other_matches: z.array(companySummary).optional(), fraud_insights: fraudInsights.optional(), additional_info: z.array(additionalInfoBlob).optional(), field_info: z.record(z.string(), fieldInfo).optional(), sources: z.array(z.string()).optional(), risk_info: riskInfo.optional(), aml_monitoring_info: z.array(aMLMonitoringUpdate).optional()});
export const validateResponse = async