import {z} from 'zod' export type CreateApiResourcesApiApplicantActionsActionIdUnhostedWalletManualVerifyArgs = {actionId: string}; export type CreateApiResourcesApiApplicantActionsActionIdUnhostedWalletManualVerifyOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const applicantAgreementType = z.enum(["onboarding", "reusableKyc"]); export const applicantAgreementItem = z.object({acceptedAt: z.string().optional(), createdAt: z.string().optional(), id: z.string().optional(), ip: z.string().optional(), recordIds: z.array(z.string()).optional(), source: z.string().optional(), type: applicantAgreementType.optional()}); export const applicantAgreement = z.object({acceptedAt: z.string().optional(), content: z.string().optional(), createdAt: z.string().optional(), items: z.array(applicantAgreementItem).optional(), link: z.string().optional(), privacyNoticeUrl: z.string().optional(), recordIds: z.array(z.string()).optional(), source: z.string().optional(), targets: z.array(z.string()).optional()}); export const aiInquiryType = z.string(); export const aiInquiryAnswer = z.object({answerType: aiInquiryType.optional(), definitionId: z.string().optional(), inquiry: z.string().optional(), inquiryId: z.string().optional(), value: z.string().max(1024).optional(), values: z.array(z.string()).optional()}); export const aiInquiriesInfo = z.object({answers: z.array(aiInquiryAnswer).optional(), inputHash: z.string().optional()}); export const amlCaseInfo = z.object({amlCaseId: z.string().optional()}); export const imageTestAnswer = z.enum(["IGNORED", "GREEN", "YELLOW", "RED", "ERROR"]); export const errorType = z.string(); export const error = z.object({type: errorType.optional()}); export const fieldStatus = z.object({errors: z.array(error).optional(), fieldName: z.string().optional()}); export const applicantDataCheckInfo = z.object({fieldStatuses: z.array(fieldStatus).optional()}); export const authorizedEmploymentInfo = z.object({workPatentValidityAnswer: imageTestAnswer.optional()}); export const autoCheckInfo = z.object({executionDotGraph: z.string().optional(), graphName: z.string().optional(), notFullProcessedImages: z.array(z.number().int()).optional()}); export const cashAccountStatus = z.string(); export const cashAccountType = z.enum(["CACC", "CASH", "CARD", "LOAN", "SVGS", "TRAN", "OTHR"]); export const locationCoords = z.object({accuracy: z.number().optional(), lat: z.number().optional(), lon: z.number().optional()}); export const locationPosition = z.object({formattedAddress: z.string().optional(), locationCoords: locationCoords.optional(), skipped: z.boolean().optional()}); export const addressSource = z.enum(["manual", "autoComplete", "gps", "externalDb", "proofOfAddress", "proofOfIdentity"]); export const address = z.object({buildingName: z.string().optional(), buildingNumber: z.string().optional(), country: z.string().optional(), endDate: z.string().optional(), flatNumber: z.string().optional(), formattedAddress: z.string().optional(), locationPosition: locationPosition.optional(), postCode: z.string().optional(), providedLocationPosition: locationPosition.optional(), source: addressSource.optional(), startDate: z.string().optional(), state: z.string().optional(), stateCode: z.string().optional(), stateEn: z.string().optional(), street: z.string().optional(), streetEn: z.string().optional(), subStreet: z.string().optional(), subStreetEn: z.string().optional(), town: z.string().optional(), townEn: z.string().optional()}); export const balanceType = z.enum(["CLAV", "CLBD", "FWAV", "INFO", "ITAV", "ITBD", "OPAV", "OPBD", "PRCD", "OTHR", "VALU", "XPCD"]); export const moneyAmount = z.object({amount: z.number().optional(), currency: z.string().optional()}); export const balanceDetails = z.object({balanceType: balanceType.optional(), lastTransactionDate: z.string().optional(), moneyAmount: moneyAmount.optional()}); export const accountDetails = z.object({accountNumber: z.string().optional(), accountStatus: cashAccountStatus.optional(), accountType: cashAccountType.optional(), addressDetails: address.optional(), balanceDetails: balanceDetails.optional(), bankBranchCode: z.string().optional(), bankBranchName: z.string().optional(), bankName: z.string().optional(), bic: z.string().optional(), canAcceptCredit: z.boolean().optional(), canAcceptDebit: z.boolean().optional(), country: z.string().optional(), creditLimit: moneyAmount.optional(), email: z.string().optional(), iban: z.string().optional(), legalAge: z.boolean().optional(), openAtLeast3Months: z.boolean().optional(), personFullName: z.string().optional(), sortCode: z.string().optional()}); export const originalRefundStatus = z.string(); export const originalPaymentStatus = z.string(); export const refundStatus = z.string(); export const paymentStatus = z.string(); export const paymentType = z.literal("OTHER"); export const transferDetails = z.object({amount: z.number().optional(), createdAt: z.string().optional(), currency: z.string().optional(), originalRefundStatus: originalRefundStatus.optional(), originalStatus: originalPaymentStatus.optional(), paymentId: z.string().optional(), reference: z.string().optional(), refundReference: z.string().optional(), refundStatus: refundStatus.optional(), status: paymentStatus.optional(), type: paymentType.optional()}); export const transferInfo = z.object({beneficiaryDetails: accountDetails.optional(), transferDetails: transferDetails.optional()}); export const bankDetailsCheckInfo = z.object({accountDetails: accountDetails.optional(), reference: z.string().optional(), transferInfo: transferInfo.optional()}); export const chainlinkAttestationCredentials = z.object({expiresAt: z.number().int().optional(), type: z.string().optional()}); export const chainlinkAttestationFlow = z.string(); export const chainlinkAttestationCheckInfo = z.object({attestationId: z.string().optional(), chainSelectorIds: z.array(z.string()).optional(), consentGiven: z.boolean().optional(), credentials: z.array(chainlinkAttestationCredentials).optional(), emailSent: z.boolean().optional(), entityId: z.string().optional(), flow: chainlinkAttestationFlow.optional(), identityId: z.string().optional(), identityTitle: z.string().optional(), issuedAt: z.number().int().optional(), issuedBy: z.string().optional(), walletAddress: z.string().optional()}); export const backgroundCheckType = z.string(); export const clientRegulationAnswer = z.object({answer: imageTestAnswer.optional(), explanation: z.string().optional(), question: z.string().optional()}); export const clientRegulationsInfo = z.object({answers: z.array(clientRegulationAnswer).optional()}); export const companyAddressType = z.enum(["trade", "legal", "postal"]); export const companyAddressInfo = z.object({addressExists: imageTestAnswer.optional(), addressTypes: z.array(companyAddressType).optional(), companyAddressId: z.string().optional(), googlePlaceMatch: imageTestAnswer.optional()}); export const companyAddressesCheckInfo = z.object({answer: imageTestAnswer.optional(), companyAddresses: z.array(companyAddressInfo).optional()}); export const companyNumber = z.object({description: z.string().optional(), value: z.string().optional()}); export const companyAddress = z.object({address: address, addressTypes: z.array(companyAddressType).optional(), id: z.string().max(256).optional(), imageId: z.number().int().optional(), main: z.boolean().optional()}); export const companyType = z.enum(["privateCompany", "publiclyListedCompany", "soleProprietor", "partnership", "trust", "nonprofitOrganization", "publicAgenciesOrAuthorities"]); export const classificationStandard = z.enum(["isic", "naics", "nace", "sic", "ukSic", "cnae", "wz2008", "wz2025", "naf", "naf21", "ateco2025", "cae4", "sbi2025", "naceBel2025", "naceLux2"]); export const industryCode = z.object({classificationStandard: classificationStandard.optional(), code: z.string().optional(), description: z.string().optional()}); export const companyLegalForm = z.string(); export const companyLicenseInfo = z.object({issuedDate: z.string().optional(), licenseNumber: z.string().optional(), validUntil: z.string().optional()}); export const companyBeneficiaryType = z.enum(["shareholder", "representative", "director", "ubo", "companyOfficer", "secretary", "founder", "investor", "legalAdvisor", "authorizedSignatory", "trustee", "trustBeneficiary", "trustSettlor", "trustProtector", "managingPartner", "equityPartner", "fundInvestor", "fundManager", "investmentManager", "investmentAdviser", "fundAdministrator", "depositary", "custodian", "primeBroker", "accountUser", "payer"]); export const companyPersonType = z.enum(["Business", "Individual"]); export const companyPerson = z.object({appointedOn: z.string().optional(), beneficialOwnershipPercent: z.number().optional(), beneficiaryType: companyBeneficiaryType.optional(), correspondenceAddress: z.string().optional(), correspondenceAddressStructured: address.optional(), country: z.string().optional(), degreeOfSeparation: z.number().int().optional(), directOwnershipPercent: z.number().optional(), dob: z.string().optional(), email: z.string().optional(), firstName: z.string().optional(), fullName: z.string().optional(), held: z.boolean().optional(), idNumber: z.string().optional(), indirectOwnershipPercent: z.number().optional(), lastName: z.string().optional(), lastUpdated: z.string().optional(), memberId: z.number().int().optional(), middleName: z.string().optional(), nationality: z.string().optional(), natureOfControl: z.string().optional(), notifiedOn: z.string().optional(), occupation: z.string().optional(), phone: z.string().optional(), resignedOn: z.string().optional(), role: z.string().optional(), shareAmount: z.string().optional(), status: z.string().optional(), targetMembersIds: z.array(z.number().int()).optional(), type: companyPersonType.optional(), verifiedByRegistry: z.boolean().optional()}); export const companyStatement = z.object({notifiedOn: z.string().optional(), statement: z.string().optional()}); export const companyCheckInfo: z.ZodType = z.object({additionalNumbers: z.array(companyNumber).optional(), affiliatedCompanies: z.array(z.lazy(() => companyCheckInfo)).optional(), alternativeNames: z.array(z.string()).optional(), commentOnRevoke: z.string().optional(), companyAddresses: z.array(companyAddress).optional(), companyName: z.string().optional(), companyNumber: z.string().optional(), companyTypeNormalized: companyType.optional(), email: z.string().optional(), employeesNumber: z.string().optional(), incorporatedOn: z.string().optional(), industryCodes: z.array(industryCode).optional(), lastUpdated: z.string().optional(), legalAddressStructured: address.optional(), legalForm: z.string().optional(), legalFormNormalized: companyLegalForm.optional(), licenseInfo: companyLicenseInfo.optional(), officeAddress: z.string().optional(), officeAddressStructured: address.optional(), officers: z.array(companyPerson).optional(), phone: z.string().optional(), registeredCapital: z.string().optional(), registrationNumbers: z.array(z.string()).optional(), significantPersons: z.array(companyPerson).optional(), source: z.string().optional(), sourceUrl: z.string().optional(), startDate: z.string().optional(), statements: z.array(companyStatement).optional(), status: z.string().optional(), statusComment: z.string().optional(), targetMembersIds: z.array(z.number().int()).optional(), taxNumber: z.string().optional(), type: z.string().optional(), vatNumber: z.string().optional(), verificationReferenceId: z.string().optional(), webPage: z.string().optional()}); export const companyStructureCheckInfo = z.object({companyName: z.string().optional(), companyNumber: z.string().optional(), officers: z.array(companyPerson).optional(), significantPersons: z.array(companyPerson).optional(), targetMembersIds: z.array(z.number().int()).optional()}); export const merchantCategoryCode = z.object({code: z.string().optional(), description: z.string().optional()}); export const companyWebPresenceMode = z.enum(["websiteAnalysis", "businessFootprintAnalysis"]); export const companyWebPresenceCheckInfo = z.object({alternativeNames: z.array(z.string()).optional(), answer: imageTestAnswer.optional(), associatedMembersLinkedin: z.number().int().optional(), companyAddresses: z.array(z.string()).optional(), companyName: z.string().optional(), companyNumber: z.string().optional(), country: z.string().optional(), domainRegisteredOn: z.string().optional(), emails: z.array(z.string()).optional(), facebookFollowerCount: z.number().int().optional(), facebookUrl: z.string().optional(), foundingYear: z.number().int().optional(), getxFollowerCount: z.number().int().optional(), getxUrl: z.string().optional(), googleBusinessProfileRating: z.number().optional(), googleBusinessProfileReviewCount: z.number().int().optional(), googleBusinessProfileUrl: z.string().optional(), hasProductDescriptions: z.boolean().optional(), hasProductPrices: z.boolean().optional(), industryCodes: z.array(industryCode).optional(), instagramFollowerCount: z.number().int().optional(), instagramUrl: z.string().optional(), isCheckoutDetected: z.boolean().optional(), isWebsiteUnderConstruction: z.boolean().optional(), linkedinEmployees: z.string().optional(), linkedinFollowerCount: z.number().int().optional(), linkedinFoundingYear: z.number().int().optional(), linkedinIndustry: z.string().optional(), linkedinSpecialties: z.array(z.string()).optional(), linkedinUrl: z.string().optional(), mcc: z.array(merchantCategoryCode).optional(), mode: companyWebPresenceMode.optional(), officers: z.array(companyPerson).optional(), phones: z.array(z.string()).optional(), privacyPolicyUrl: z.string().optional(), refundPolicyUrl: z.string().optional(), shippingPolicyUrl: z.string().optional(), termsOfServiceUrl: z.string().optional(), tlsIssuedTo: z.string().optional(), tlsValid: z.boolean().optional(), trustpilotRating: z.number().optional(), trustpilotReviewCount: z.number().int().optional(), trustpilotUrl: z.string().optional(), websiteActive: z.boolean().optional(), websiteUrl: z.string().optional()}); export const idDocSetType = z.enum(["APPLICANT_DATA", "EMAIL_VERIFICATION", "PHONE_VERIFICATION", "IDENTITY", "IDENTITY2", "IDENTITY3", "IDENTITY4", "SELFIE", "SELFIE2", "PROOF_OF_RESIDENCE", "PROOF_OF_RESIDENCE2", "PROOF_OF_PAYMENT", "PAYMENT_METHODS", "INVESTABILITY", "COMPANY", "ACCREDITED_INVESTOR", "E_SIGN", "QUESTIONNAIRE", "QUESTIONNAIRE2", "QUESTIONNAIRE3", "QUESTIONNAIRE4", "E_KYC", "OTHER_DOCS", "COMPANY_DATA", "COMPANY_DOCUMENTS", "COMPANY_BENEFICIARIES", "COMPANY_ADDRESSES", "TR_RECIPIENT_INFORMATION", "DEVICE_CHECK", "SOLANA_ATTESTATION", "LINEA_ATTESTATION", "CHAINLINK_ATTESTATION"]); export const crossCheckStepRejectionParams = z.object({buttonIds: z.array(z.string().max(256)).optional(), idDocSetType: idDocSetType.optional()}); export const crossCheckRuleActionType = z.literal("stepRejection"); export const crossCheckRuleAction = z.object({stepRejection: crossCheckStepRejectionParams.optional(), type: crossCheckRuleActionType.optional()}); export const arg = z.object({astId: z.number().int().optional(), exp: z.string().max(512).optional(), lit: z.string().max(8192).optional()}); export const op = z.string(); export const criterion = z.object({args: z.array(arg).optional(), astId: z.number().int().optional(), op: op.optional()}); export const and = z.object({and: z.array(criterion).optional(), astId: z.number().int().optional(), negate: z.boolean().optional(), score: z.number().int().optional()}); export const condition = z.object({astId: z.number().int().optional(), negate: z.boolean().optional(), or: z.array(and).optional()}); export const crossCheckDataSource = z.string(); export const crossCheckRuleOrigin = z.string(); export const backgroundCheckViolation = z.enum(["BDATE_MISMATCH", "NAME_MISMATCH", "GENDER_MISMATCH", "TIN_MISMATCH", "DOC_EXPIRED", "INVALID_DOC_NUMBER", "ADDRESS_MISMATCH", "DEAD", "PERSON_IS_MINOR", "DATA_NOT_FOUND", "SELFIE_MISMATCH", "NOT_ENOUGH_DATA", "EXTERNAL_DB_SUSPICIOUS", "INVALID_ID_STATUS", "VERIFICATION_REQUIREMENTS_NOT_MET", "AUTHENTICATION_FAILED", "AUTHORIZATION_DENIED", "ID_NUMBER_MISMATCH", "ACCOUNT_TYPE_MISMATCH", "ACCOUNT_NOT_FOUND", "ACCOUNT_NOT_OPEN", "PAYMENT_SOURCE_NAME_MISMATCH", "PAYMENT_SOURCE_DATA_MISMATCH", "COMPANY_WEBSITE_NOT_ACTIVE", "COUNTRY_MISMATCH"]); export const crossCheckEvaluatedRule = z.object({autoCheckActions: z.array(crossCheckRuleAction).optional(), condition: condition.optional(), dataSources: z.array(crossCheckDataSource).optional(), expressionContext: z.string().optional(), imageIds: z.array(z.number().int()).optional(), origin: crossCheckRuleOrigin.optional(), ruleId: z.string().optional(), title: z.string().optional(), violation: backgroundCheckViolation.optional()}); export const crossCheckInfo = z.object({failedRules: z.array(crossCheckEvaluatedRule).optional(), presetId: z.string().optional(), unmatchedRules: z.array(crossCheckEvaluatedRule).optional()}); export const customDataCheckInfoErrorType = z.enum(["wrongInput", "emptyResponse", "responseParsing", "http", "unreachable", "unknown"]); export const customDataSourceCheckInfoError = z.object({msg: z.string().optional(), responseCode: z.number().int().optional(), type: customDataCheckInfoErrorType.optional()}); export const applicantMetadataKV = z.object({key: z.string().optional(), value: z.string().optional()}); export const outputFieldType = z.string(); export const outputField = z.object({desc: z.string().optional(), key: z.string().optional(), type: outputFieldType.optional(), value: z.string().optional()}); export const result = z.object({inputFields: z.array(applicantMetadataKV).optional(), outputFields: z.array(outputField).optional()}); export const customDataSourceCheckInfo = z.object({error: customDataSourceCheckInfoError.optional(), result: result.optional(), sourceId: z.string().optional(), success: z.boolean().optional(), title: z.string().optional()}); export const checkSourceMethod = z.enum(["ENRICHMENT", "ONE_X_ONE_MATCHING", "TWO_X_TWO_MATCHING", "VALIDITY_CHECK", "DUAL_SOURCE", "CREDIT_FILE"]); export const crossCheckAddressDetails = z.object({answer: imageTestAnswer.optional(), buildingNumber: imageTestAnswer.optional(), flatNumber: imageTestAnswer.optional(), postCode: imageTestAnswer.optional(), state: imageTestAnswer.optional(), street: imageTestAnswer.optional(), subStreet: imageTestAnswer.optional(), town: imageTestAnswer.optional()}); export const crossCheckDobDetails = z.object({answer: imageTestAnswer.optional(), dayOfBirth: imageTestAnswer.optional(), dob: imageTestAnswer.optional(), monthOfBirth: imageTestAnswer.optional(), yearOfBirth: imageTestAnswer.optional()}); export const crossCheckDocumentDetails = z.object({answer: imageTestAnswer.optional(), documentNumber: imageTestAnswer.optional(), tinNumber: imageTestAnswer.optional()}); export const crossCheckExtractedDataDetails = z.object({accountNumber: z.string().optional(), buildingNumber: z.string().optional(), dob: z.string().optional(), firstName: z.string().optional(), flatNumber: z.string().optional(), lastName: z.string().optional(), middleName: z.string().optional(), postCode: z.string().optional(), state: z.string().optional(), street: z.string().optional(), town: z.string().optional()}); export const crossCheckNameDetails = z.object({answer: imageTestAnswer.optional(), firstInitial: imageTestAnswer.optional(), firstName: imageTestAnswer.optional(), lastName: imageTestAnswer.optional(), middleName: imageTestAnswer.optional()}); export const crossCheckPhoneDetails = z.object({answer: imageTestAnswer.optional(), phone: imageTestAnswer.optional()}); export const crossCheckDataDetails = z.object({address: crossCheckAddressDetails.optional(), dob: crossCheckDobDetails.optional(), document: crossCheckDocumentDetails.optional(), extractedData: crossCheckExtractedDataDetails.optional(), name: crossCheckNameDetails.optional(), phone: crossCheckPhoneDetails.optional(), source: z.string().optional()}); export const crossCheckDetails = z.object({detailsBreakdown: z.array(crossCheckDataDetails).optional()}); export const externalFaceMatchInfo = z.object({faceMatchAnswer: imageTestAnswer.optional(), faceMatchScore: z.number().optional(), selfieImageId: z.number().int().optional()}); export const checkSourceProcessingEvent = z.object({date: z.string().optional(), event: z.string().optional()}); export const checkSourceVerificationCheckName = z.string(); export const checkSourceVerificationResult = z.object({result: imageTestAnswer.optional(), verificationCheckName: checkSourceVerificationCheckName.optional()}); export const databasePersonCheckInfo = z.object({checkSourceMethod: checkSourceMethod.optional(), crossCheckDetails: crossCheckDetails.optional(), externalFaceMatchInfo: externalFaceMatchInfo.optional(), processingEvents: z.array(checkSourceProcessingEvent).optional(), verificationResults: z.array(checkSourceVerificationResult).optional()}); export const riskCode = z.string(); export const bettingRestrictionRisk = z.object({associatedName: z.string().optional(), linkLevel: z.string().optional(), organization: z.string().optional(), position: z.string().optional(), relatedDocument: z.string().optional(), relatedDocumentType: z.string().optional(), restrictionType: z.string().optional(), sport: z.string().optional(), updateDate: z.string().optional()}); export const subjectDto = z.object({addresses: z.array(address).optional(), dateOfBirth: z.string().optional(), email: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), phoneNumber: z.string().optional(), role: z.string().optional(), roleQualifier: z.string().optional()}); export const falseIdentityRisk = z.object({caseId: z.string().optional(), caseType: z.string().optional(), matchingRules: z.array(z.string()).optional(), reason: z.string().optional(), referenceCode: z.string().optional(), subjects: z.array(subjectDto).optional(), supplyDate: z.string().optional()}); export const sexOffenderRisk = z.object({address: z.string().optional(), age: z.string().optional(), city: z.string().optional(), county: z.string().optional(), crime: z.string().optional(), dob: z.string().optional(), dobPrecision: z.string().optional(), ethnicity: z.string().optional(), eyeColor: z.string().optional(), firstName: z.string().optional(), hairColor: z.string().optional(), height: z.string().optional(), isAbsconder: z.boolean().optional(), isPredator: z.boolean().optional(), jurisdiction: z.string().optional(), lastName: z.string().optional(), lat: z.number().optional(), lng: z.number().optional(), marks: z.string().optional(), middleName: z.string().optional(), name: z.string().optional(), offenderImageUrl: z.string().optional(), offenderImageUrlR2: z.string().optional(), offenderUrl: z.string().optional(), race: z.string().optional(), registrationDate: z.string().optional(), riskLevel: z.string().optional(), sex: z.string().optional(), state: z.string().optional(), uuid: z.string().optional(), weight: z.string().optional(), zip: z.string().optional()}); export const hitResult = z.object({bettingRestrictionRisk: bettingRestrictionRisk.optional(), falseIdentityDocumentFraudRisk: falseIdentityRisk.optional(), falseIdentityFraudRisk: falseIdentityRisk.optional(), sexOffenderNearAddressRisk: sexOffenderRisk.optional(), sexOffenderPropertyOwnerRisk: sexOffenderRisk.optional(), sexOffenderRisk: sexOffenderRisk.optional()}); export const riskRecord = z.object({code: riskCode.optional(), found: z.boolean().optional(), hitResults: z.array(hitResult).optional()}); export const detailedPersonHitsInfo = z.object({answer: imageTestAnswer.optional(), riskRecords: z.array(riskRecord).optional()}); export const deviceCheckRiskLabel = z.enum(["rooted", "emulator", "badBot", "tampering", "antiDetectBrowser", "clonedApp", "jailbroken", "fridaTool", "virtualMachine", "locationSpoofing", "mitmAttack", "privacySettingsMode", "goodBot", "incognito", "highActivity", "developerTools", "adblock", "factoryReset"]); export const devicePeriodStats = z.object({deviceCount: z.number().int().optional(), deviceIds: z.array(z.string()).optional(), riskLabels: z.array(deviceCheckRiskLabel).optional(), riskLevel: imageTestAnswer.optional(), sameDeviceApplicantCount: z.number().int().optional()}); export const deviceStats = z.object({days1: devicePeriodStats.optional(), days7: devicePeriodStats.optional(), hours1: devicePeriodStats.optional(), minutes5: devicePeriodStats.optional()}); export const deviceSdkType = z.enum(["js", "android", "ios"]); export const deviceInfo = z.object({browser: z.string().optional(), browserFullVersion: z.string().max(100).optional(), make: z.string().optional(), model: z.string().optional(), platform: z.string().optional(), platformVersion: z.string().max(50).optional(), sdkType: deviceSdkType.optional(), type: z.string().optional()}); export const checkedDevice = z.object({deviceId: z.string().optional(), info: deviceInfo.optional(), riskLabels: z.array(deviceCheckRiskLabel).optional(), riskLevel: imageTestAnswer.optional()}); export const reviewLabel = z.enum(["FORGERY", "HIGH_RISK", "CRIMINAL", "DOCUMENT_TEMPLATE", "LOW_QUALITY", "SPAM", "NOT_DOCUMENT", "SELFIE_MISMATCH", "ID_INVALID", "DOCUMENT_DEPRIVED", "FOREIGNER", "DUPLICATE", "BAD_AVATAR", "WRONG_USER_REGION", "WRONG_ADDRESS", "INCOMPLETE_DOCUMENT", "BLOCKLIST", "OTHER", "UNSATISFACTORY_PHOTOS", "GRAPHIC_EDITOR", "DOCUMENT_PAGE_MISSING", "DOCUMENT_DAMAGED", "DIGITAL_DOCUMENT", "REGULATIONS_VIOLATIONS", "INCONSISTENT_PROFILE", "PROBLEMATIC_APPLICANT_DATA", "GPS_AS_POA_SKIPPED", "ADDITIONAL_DOCUMENT_REQUIRED", "MORE_DOCUMENTS_REQUIRED", "AGE_REQUIREMENT_MISMATCH", "REQUESTED_DATA_MISMATCH", "EXPERIENCE_REQUIREMENT_MISMATCH", "COMPROMISED_PERSONS", "PEP", "ADVERSE_MEDIA", "FRAUDULENT_PATTERNS", "STOLEN_DOCS", "SCAM_VICTIM", "SANCTIONS", "NOT_ALL_CHECKS_COMPLETED", "FRONT_SIDE_MISSING", "BACK_SIDE_MISSING", "SCREENSHOTS", "BLACK_AND_WHITE", "INCOMPATIBLE_LANGUAGE", "EXPIRATION_DATE", "UNFILLED_ID", "BAD_SELFIE", "BAD_VIDEO_SELFIE", "BAD_FACE_MATCHING", "BAD_PROOF_OF_IDENTITY", "BAD_PROOF_OF_ADDRESS", "BAD_PROOF_OF_PAYMENT", "SUSPICIOUS_DOCUMENT", "SELFIE_WITH_PAPER", "FRAUDULENT_LIVENESS", "EXTERNAL_DECISION_REJECTION", "OK", "COMPANY_NOT_DEFINED_STRUCTURE", "COMPANY_NOT_DEFINED_BENEFICIARIES", "COMPANY_NOT_VALIDATED_BENEFICIAL_OWNERS", "COMPANY_NOT_VALIDATED_BENEFICIARIES", "COMPANY_NOT_VALIDATED_DIRECTORS", "COMPANY_NOT_DEFINED_REPRESENTATIVES", "COMPANY_NOT_VALIDATED_REPRESENTATIVES", "UNSUITABLE_DOCUMENT", "OUTDATED_DOCUMENT_VERSION", "COMPANY_NOT_DEFINED_OWNERSHIP_STRUCTURE", "COMPANY_INACTIVE_ENTITY", "COMPANY_INCORRECT_DATA", "COMPANY_PROBLEMATIC_STRUCTURE", "COMPANY_DATA_MISMATCH", "APPLICANT_INTERRUPTED_INTERVIEW", "DOCUMENT_MISSING", "UNSUITABLE_ENV", "CONNECTION_INTERRUPTED", "UNSUPPORTED_LANGUAGE", "THIRD_PARTY_INVOLVED", "INCORRECT_SOCIAL_NUMBER", "CHECK_UNAVAILABLE", "DB_DATA_NOT_FOUND", "DB_DATA_MISMATCH", "DB_NO_DATA_SOURCE", "ESIGN_FAILED", "RESTRICTED_PERSON", "NO_APPLICANT", "NO_SUITABLE_DOCS", "NOT_ALONE", "CONNECTION_ISSUES", "CAMERA_OR_LIGHTING_ISSUES", "SOUND_ISSUES", "PHONE_VERIFICATION_ISSUES", "OTHER_VI_ISSUES", "REFUSED_TO_CONTINUE", "VIDEO_FILTERS_OR_MASKS", "SUPPORTED_LANGUAGE_IS_NOT_AVAILABLE", "ADDITIONAL_DATA_REQUIRED", "VI_ATTEMPTS_LIMIT_REACHED", "BEHAVIOR", "PERSON_MISMATCH", "THIRD_PARTY_GUIDANCE", "SPONSORED_VERIFICATION", "INSUFFICIENT_DATA", "INCORRECT_PATTERNS"]); export const reviewRejectType = z.enum(["FINAL", "RETRY"]); export const reviewStatus = z.enum(["init", "pending", "queued", "awaitingUser", "onHold", "prechecked", "completed", "awaitingService"]); export const deviceCheckRelatedApplicant = z.object({applicantId: z.string().optional(), deviceIds: z.array(z.string()).optional(), rejectLabels: z.array(reviewLabel).optional(), reviewAnswer: imageTestAnswer.optional(), reviewRejectType: reviewRejectType.optional(), reviewStatus: reviewStatus.optional()}); export const deviceCheckInfo = z.object({blocklisted: z.boolean().optional(), deviceStats: deviceStats.optional(), devices: z.array(checkedDevice).optional(), levelName: z.string().optional(), relatedApplicantCount: z.number().int().optional(), relatedApplicants: z.array(deviceCheckRelatedApplicant).optional(), riskLevel: imageTestAnswer.optional(), whitelisted: z.boolean().optional()}); export const digitalFootprintAddressValue = z.object({address: address.optional(), lastSeen: z.string().optional(), validSince: z.string().optional()}); export const digitalFootprintDateValue = z.object({end: z.string().optional(), lastSeen: z.string().optional(), start: z.string().optional(), validSince: z.string().optional()}); export const digitalFootprintStrValue = z.object({lastSeen: z.string().optional(), validSince: z.string().optional(), value: z.string().optional()}); export const digitalFootprintPerson = z.object({addresses: z.array(digitalFootprintAddressValue).optional(), dobs: z.array(digitalFootprintDateValue).optional(), names: z.array(digitalFootprintStrValue).optional()}); export const digitalFootprintInfo = z.object({numberOfUniqueIdentities: z.number().int().optional(), persons: z.array(digitalFootprintPerson).optional(), riskScore: z.number().int().optional()}); export const driverBackgroundInfoDecision = z.object({comment: z.string().optional(), issuedDate: z.string().optional(), monthsValid: z.number().int().optional()}); export const driverBackgroundInfoDetails = z.object({categories: z.string().optional(), decisions: z.array(driverBackgroundInfoDecision).optional(), dob: z.string().optional(), issuedDate: z.string().optional(), validUntil: z.string().optional()}); export const driverLicenseValidityCode = z.string(); export const driverBackgroundInfo = z.object({details: driverBackgroundInfoDetails.optional(), identityAnswer: imageTestAnswer.optional(), kbmCoeff: z.number().optional(), validityAnswer: imageTestAnswer.optional(), validityCode: driverLicenseValidityCode.optional(), violationsAnswer: imageTestAnswer.optional()}); export const checkConfirmationType = z.enum(["otp", "oAuth", "eID"]); export const ekycCheckInfo = z.object({confirmationId: z.string().optional(), confirmationType: checkConfirmationType.optional(), externalFaceMatch: z.boolean().optional(), faceMatchAnswer: imageTestAnswer.optional(), faceMatchScore: z.number().optional(), idDocSetType: idDocSetType.optional(), selfieImageId: z.number().int().optional(), skipped: z.boolean().optional()}); export const emailDomainType = z.string(); export const emailNetworkIntelligence = z.object({activityIndex: z.number().int().optional(), diversityIndex: z.number().int().optional(), firstSeenDays: z.number().int().optional()}); export const emailRiskLabel = z.enum(["mediumRisk", "highRisk", "disposable", "noWebRegistrations", "noWebsiteExists", "nonDeliverable", "invalidEmail", "gibberish", "freshEmail", "plusAddressing", "excessiveDots"]); export const emailConfirmationCheckInfo = z.object({blocklisted: z.boolean().optional(), breachesCnt: z.number().int().optional(), confirmedViaOtp: imageTestAnswer.optional(), deliverable: imageTestAnswer.optional(), domainType: emailDomainType.optional(), email: z.string().optional(), excessiveDots: z.boolean().optional(), firstSeenAt: z.string().optional(), freshEmail: imageTestAnswer.optional(), humanLike: imageTestAnswer.optional(), intelligence: emailNetworkIntelligence.optional(), leaked: z.boolean().optional(), nonDisposable: imageTestAnswer.optional(), plusAddressing: z.boolean().optional(), profiles: z.array(z.string()).optional(), riskLabels: z.array(emailRiskLabel).optional(), riskLevel: imageTestAnswer.optional(), validEmail: imageTestAnswer.optional(), webRegistrationsExist: imageTestAnswer.optional(), websiteExists: imageTestAnswer.optional(), whitelisted: z.boolean().optional()}); export const eSignFileAgreement = z.object({name: z.string().optional(), url: z.string().optional()}); export const eSignAgreement = z.object({accepted: z.boolean().optional(), files: z.array(eSignFileAgreement).optional(), id: z.string().optional(), text: z.string().optional(), url: z.string().optional()}); export const eSignAgreements = z.object({accepted: z.boolean().optional(), agreements: z.array(eSignAgreement).optional(), fileAgreements: z.array(eSignAgreement).optional(), textAgreements: z.array(eSignAgreement).optional()}); export const encodedDate = z.object({date: z.string().optional()}); export const eSignOtpInfo = z.object({otpConfirmed: z.string().optional(), otpSent: z.array(encodedDate).optional()}); export const eSignSignatureType = z.string(); export const eSignSignaturePage = z.object({id: z.string().optional(), page: z.number().int().optional()}); export const eSignSignature = z.object({accepted: z.boolean().optional(), id: z.string().optional(), optional: z.boolean().optional(), pages: z.array(eSignSignaturePage).optional(), text: z.string().optional()}); export const eSignSigningDocument = z.object({agreements: z.array(eSignSignature).optional(), hash: z.string().optional(), id: z.string().optional(), imageId: z.number().int().optional(), name: z.string().optional(), resourceId: z.string().optional(), signedAt: z.string().optional(), url: z.string().optional()}); export const eSignValidationReportInfo = z.object({documentName: z.string().optional(), reportHash: z.string().optional(), signedDocumentImageId: z.number().int().optional(), timestamp: z.number().int().optional(), validationReportImageId: z.number().int().optional()}); export const esignCheckInfo = z.object({acceptedAt: z.string().optional(), agreement: eSignAgreements.optional(), otpInfo: eSignOtpInfo.optional(), otpSent: z.string().optional(), signatureType: eSignSignatureType.optional(), signedDocuments: z.array(eSignSigningDocument).optional(), unsignedDocuments: z.array(eSignSigningDocument).optional(), validationReportInfo: z.array(eSignValidationReportInfo).optional()}); export const executionInfo = z.object({executionId: z.string().optional(), finalResult: z.boolean().optional()}); export const backgroundCheckAdditionalField = z.object({name: z.string().optional(), value: z.string().optional()}); export const idDocType = z.enum(["ID_CARD", "PASSPORT", "TRAVEL_PASSPORT", "DRIVERS", "SNILS", "RESIDENCE_PERMIT", "WORK_PERMIT", "WORK_PATENT", "VISA", "EMPLOYMENT_CERTIFICATE", "DRIVERS_TRANSLATION", "PASSPORT_TRANSLATION", "UTILITY_BILL", "UTILITY_BILL2", "ID_AS_POA", "SELFIE", "VIDEO_SELFIE", "PAYMENT_SELFIE", "STUDENT_ID", "BANK_CARD", "PROOF_OF_PAYMENT", "BANK_STATEMENT", "PROFILE_IMAGE", "PROFILE_SCREENSHOT", "ID_DOC_PHOTO", "MRZ_DOCUMENT", "AGREEMENT", "OTHER", "OTHER2", "OTHER3", "CONTRACT", "SIGNED_CONTRACT", "INVESTOR_DOC", "COMPANY_DOC", "VAT_CERTIFICATE", "POWER_OF_ATTORNEY", "TRANSPARENCY_REGISTRY_EXTRACT", "INCOME_SOURCE", "VEHICLE_REGISTRATION_CERTIFICATE", "VEHICLE_PASSPORT", "LEGAL_ENTITY", "MIGRATION_CARD", "ARRIVAL_NOTICE", "PAYMENT_METHOD", "PAYMENT_SOURCE", "INSURANCE_CERTIFICATE", "TAXI_LICENSE", "COVID_VACCINATION_FORM", "COVID_TEST_FORM", "TAX_PAYER_NUMBER_DOC", "FILE_ATTACHMENT", "ARBITRARY_DOC", "VOTER_ID", "IDENTITY_VIDEO", "EXTERNAL_DB_DOC", "DEBUG"]); export const backgroundCheckAdditionalDoc = z.object({additionalFields: z.array(backgroundCheckAdditionalField).optional(), country: z.string().optional(), dob: z.string().optional(), firstName: z.string().optional(), idDocType: idDocType.optional(), issueDate: z.string().optional(), lastName: z.string().optional(), middleName: z.string().optional(), mrzLine1: z.string().optional(), nationality: z.string().optional(), number: z.string().optional(), validUntil: z.string().optional()}); export const externalProfileImage = z.object({imageId: z.number().int().optional(), source: z.string().optional()}); export const extractedImage = z.object({fileName: z.string().optional(), imageId: z.number().int().optional()}); export const backgroundCheckExtractedData = z.object({additionalDocs: z.array(backgroundCheckAdditionalDoc).optional(), additionalFields: z.array(backgroundCheckAdditionalField).optional(), addresses: z.array(address).optional(), aliasName: z.string().optional(), category: z.string().optional(), companyName: z.string().optional(), companyWebsite: z.string().optional(), country: z.string().optional(), countryOfBirth: z.string().optional(), detectedLanguages: z.array(z.string()).optional(), dob: z.string().optional(), documentName: z.string().optional(), email: z.string().optional(), externalProfileImages: z.array(externalProfileImage).optional(), firstName: z.string().optional(), gender: z.string().optional(), iban: z.string().optional(), idDocType: idDocType.optional(), images: z.array(extractedImage).optional(), issueAuthority: z.string().optional(), issueDate: z.string().optional(), issueNumber: z.string().optional(), lastName: z.string().optional(), middleName: z.string().optional(), mrzLine1: z.string().optional(), names: z.array(z.string()).optional(), nationality: z.string().optional(), number: z.string().optional(), phone: z.string().optional(), placeOfBirth: z.string().optional(), stateOfBirth: z.string().optional(), tin: z.string().optional(), validUntil: z.string().optional()}); export const faceMatchImageInfo = z.object({contentDeleted: z.boolean().optional(), faceContentId: z.number().int().optional(), originImageId: z.number().int().optional()}); export const faceMatchInfo = z.object({answer: imageTestAnswer.optional(), confidence: z.number().optional(), external: z.boolean().optional(), face1: faceMatchImageInfo, face2: faceMatchImageInfo, faceContentId1: z.number().int().optional(), faceContentId2: z.number().int().optional(), originImageId1: z.number().int().optional(), originImageId2: z.number().int().optional()}); export const bankAccountInputData = z.object({accountDocNumber: z.string().optional(), accountDocType: idDocType.optional(), accountNumber: z.string().optional(), accountType: cashAccountType.optional(), bankName: z.string().optional(), foreignCitizen: z.boolean().optional()}); export const vehicleInfo = z.object({color: z.string().optional(), make: z.string().optional(), model: z.string().optional(), type: z.string().optional()}); export const backgroundCheckInputData = z.object({additionalNumber: z.string().optional(), address: address.optional(), aliasName: z.string().optional(), bankAccount: bankAccountInputData.optional(), barcodeLine: z.string().optional(), buildingNumber: z.string().optional(), category: z.string().optional(), companyName: z.string().optional(), country: z.string().optional(), countryOfBirth: z.string().optional(), dob: z.string().optional(), email: z.string().optional(), firstIssuedDate: z.string().optional(), firstName: z.string().optional(), firstNameEn: z.string().optional(), flatNumber: z.string().optional(), gender: z.string().optional(), idDocSetType: idDocSetType.optional(), idDocType: idDocType.optional(), issueAuthority: z.string().optional(), issueAuthorityCode: z.string().optional(), issueNumber: z.string().optional(), issuedDate: z.string().optional(), lastName: z.string().optional(), lastNameEn: z.string().optional(), metadata: z.array(applicantMetadataKV).optional(), middleName: z.string().optional(), middleNameEn: z.string().optional(), mrzLine1: z.string().optional(), mrzLine2: z.string().optional(), mrzLine3: z.string().optional(), nationality: z.string().optional(), number: z.string().optional(), parentName1: z.string().optional(), parentName2: z.string().optional(), phone: z.string().optional(), placeOfBirth: z.string().optional(), postCode: z.string().optional(), profileTrust: z.number().optional(), state: z.string().optional(), street: z.string().optional(), subStreet: z.string().optional(), tin: z.string().optional(), town: z.string().optional(), txnAmount: z.string().optional(), validUntil: z.string().optional(), vehicleInfo: vehicleInfo.optional(), website: z.string().optional()}); export const ipConnectionType = z.enum(["residential", "cellular", "business", "hosting", "government", "educational"]); export const ipInfo = z.object({anonymous: z.boolean().optional(), anycast: z.boolean().optional(), asn: z.number().int().optional(), asnOrg: z.string().optional(), carrierName: z.string().optional(), city: z.string().optional(), connectionType: ipConnectionType.optional(), countryCode2: z.string().optional(), countryCode3: z.string().optional(), createdAt: z.string().optional(), dataReceivedJustNow: z.boolean().optional(), hostingProvider: z.boolean().optional(), ip: z.string().optional(), lat: z.number().optional(), lon: z.number().optional(), mobile: z.boolean().optional(), org: z.string().optional(), potentialResProxy: imageTestAnswer.optional(), proxy: z.boolean().optional(), radiusInKm: z.number().int().optional(), relay: z.boolean().optional(), riskyAsn: z.boolean().optional(), satellite: z.boolean().optional(), state: z.string().optional(), stateCode: z.string().optional(), timezone: z.string().optional(), tor: z.boolean().optional(), vpn: z.boolean().optional(), zipCode: z.string().optional()}); export const resProxyIpInfo = z.object({days7SeenPct: z.number().optional(), lastSeen: z.string().optional(), name: z.string().optional()}); export const ipCheckInfo = z.object({blocklisted: z.boolean().optional(), connectionType: z.string().optional(), hostingProvider: imageTestAnswer.optional(), internetServiceProvider: z.string().optional(), ip: z.string().optional(), ipInfo: ipInfo.optional(), organization: z.string().optional(), potentialResProxy: imageTestAnswer.optional(), proxy: imageTestAnswer.optional(), relay: imageTestAnswer.optional(), resProxyIpInfo: resProxyIpInfo.optional(), riskLevel: imageTestAnswer.optional(), riskScore: z.number().optional(), tor: imageTestAnswer.optional(), vpn: imageTestAnswer.optional(), whitelisted: z.boolean().optional()}); export const lineaAttestationCheckInfo = z.object({attestationId: z.string().optional(), cluster: z.string().optional(), consentGiven: z.boolean().optional(), crystalSanctionsSignal: z.number().optional(), trmLabsRiskScore: z.number().int().optional(), txnHash: z.string().optional(), walletAddress: z.string().optional()}); export const livenessDataImage = z.object({imageId: z.number().int().optional(), ts: z.string().optional()}); export const livenessData = z.object({images: z.array(livenessDataImage).optional(), sessionId: z.string().optional()}); export const livenessResult = z.object({allowContinuing: z.boolean().optional(), answer: imageTestAnswer.optional()}); export const livenessInfo = z.object({bestImageIndex: z.number().int().optional(), idDocType: idDocType.optional(), livenessData: livenessData.optional(), livenessResult: livenessResult.optional()}); export const nfcExtractedDataDocumentInfo = z.object({custodyInformation: z.string().optional(), fullDateOfBirth: z.string().optional(), nameOfHolder: z.string().optional(), otherNames: z.array(z.string()).optional(), otherValidTDNumbers: z.array(z.string()).optional(), permanentAddress: z.array(z.string()).optional(), personalNumber: z.string().optional(), personalSummary: z.string().optional(), placeOfBirth: z.array(z.string()).optional(), profession: z.string().optional(), telephone: z.string().optional(), title: z.string().optional()}); export const nfcExtractedDataFingerprints = z.object({fingerInfo: z.string().optional()}); export const nfcExtractedDataImages = z.object({faceMimeType: z.string().optional()}); export const gender = z.enum(["M", "F", "X"]); export const nfcExtractedDataMrzInfo = z.object({dateOfExpiration: z.string().optional(), dob: z.string().optional(), documentNumber: z.string().optional(), fullMrz: z.string().optional(), gender: gender.optional(), identifier: z.string().optional(), issuingState: z.string().optional(), nationality: z.string().optional()}); export const nfcExtractedDataSignedData = z.object({issuerPrincipal: z.string().optional()}); export const nfcExtractedDataVerificationData = z.object({dateAndTimeOfPersonalization: z.string().optional(), dateOfIssue: z.string().optional(), endorsementsAndObservations: z.string().optional(), issuingAuthority: z.string().optional(), namesOfOtherPersons: z.array(z.string()).optional(), personalizationSystemSerialNumber: z.string().optional(), taxOrExitRequirements: z.string().optional()}); export const nfcExtractedData = z.object({documentInfo: nfcExtractedDataDocumentInfo.optional(), fingerprints: nfcExtractedDataFingerprints.optional(), images: nfcExtractedDataImages.optional(), mrzInfo: nfcExtractedDataMrzInfo.optional(), signedData: nfcExtractedDataSignedData.optional(), verificationData: nfcExtractedDataVerificationData.optional()}); export const nfcFailureReason = z.string(); export const nfcError = z.object({reason: nfcFailureReason}); export const nfcModuleStatus = z.string(); export const nfcModuleStatusInfo = z.object({errorCode: z.string().optional(), status: nfcModuleStatus.optional()}); export const nfcAccessControlStatus = z.object({bac: nfcModuleStatusInfo.optional(), eacta: nfcModuleStatusInfo.optional(), pace: nfcModuleStatusInfo.optional()}); export const nfcCertificateInfo = z.object({name: z.string().optional()}); export const nfcValidationInfoHashValidation = z.object({images: z.boolean().optional(), mrzInfo: z.boolean().optional()}); export const nfcValidationInfo = z.object({accessControlStatus: nfcAccessControlStatus.optional(), activeAuthentication: nfcModuleStatusInfo.optional(), certificateChain: z.array(nfcCertificateInfo).optional(), certificateMasterListCheck: z.boolean().optional(), certificateSelfCheck: z.boolean().optional(), hashValidation: nfcValidationInfoHashValidation.optional()}); export const nfcCheckInfo = z.object({extractedData: nfcExtractedData.optional(), processingErrors: z.array(nfcError).optional(), validCertificate: imageTestAnswer.optional(), validation: nfcValidationInfo.optional()}); export const paymentSourceComparisonFieldInfo = z.object({answer: imageTestAnswer.optional(), comparedValue: z.string().optional(), extractedValue: z.string().optional(), fieldName: z.string().optional()}); export const paymentSourceCrossCheck = z.object({answer: imageTestAnswer.optional(), attemptId: z.string().optional(), createdAt: z.string().optional(), fields: z.array(paymentSourceComparisonFieldInfo).optional()}); export const transliteratedValue = z.object({value: z.string().optional()}); export const paymentSourceType = z.enum(["bankCard", "bankStatement", "eWallet", "cryptoWallet"]); export const paymentSourceInfo = z.object({accountIdentifier: z.string().optional(), country: z.string().optional(), cryptoChain: z.string().optional(), currencyCode: z.string().optional(), email: z.string().optional(), fullName: z.string().optional(), fullNameEn: transliteratedValue.optional(), iban: z.string().max(64).optional(), institutionName: z.string().optional(), institutionNameEn: transliteratedValue.optional(), issuedDate: z.string().optional(), memo: z.string().optional(), nationalBankAccountNumber: z.string().max(32).optional(), nationalBankCode: z.string().max(32).optional(), phone: z.string().optional(), type: paymentSourceType.optional(), validUntil: z.string().optional()}); export const paymentSourceCheckInputData = z.object({userProvidedInfo: paymentSourceInfo.optional()}); export const paymentSourceOwnershipCheckType = z.literal("unhostedWallet"); export const paymentSourceUnhostedWalletProvider = z.string(); export const paymentSourceUnhostedWalletCheckType = z.enum(["signature", "quickproof", "form", "satoshiTest", "manualByClient"]); export const paymentSourceUnhostedWalletCheck = z.object({address: z.string().optional(), attemptId: z.string().optional(), provider: paymentSourceUnhostedWalletProvider.optional(), quickproofLink: z.string().optional(), satoshiTestDepositAddress: z.string().optional(), satoshiTestDepositAmount: z.string().optional(), satoshiTestDepositAmountBaseUnits: z.string().optional(), satoshiTestDepositMemo: z.string().optional(), signature: z.string().optional(), signatureMessage: z.string().optional(), siweMessage: z.string().optional(), type: paymentSourceUnhostedWalletCheckType.optional(), verifiedBySubject: z.string().optional()}); export const paymentSourceOwnershipCheck = z.object({answer: imageTestAnswer.optional(), attemptId: z.string().optional(), createdAt: z.string().optional(), type: paymentSourceOwnershipCheckType.optional(), unhostedWallet: paymentSourceUnhostedWalletCheck.optional()}); export const bankAccountCheckInputData = z.object({fullName: z.string().max(128).optional(), iban: z.string().max(128).optional()}); export const bankAccountVopCheckCode = z.string(); export const bankAccountCheckInfo = z.object({answer: imageTestAnswer.optional(), inputData: bankAccountCheckInputData.optional(), vopAnswer: imageTestAnswer.optional(), vopCode: bankAccountVopCheckCode.optional(), vopMatchedName: z.string().max(256).optional()}); export const bankCardCheckInputData = z.object({number: z.string().optional(), validUntil: z.string().optional()}); export const bankCardBinInfo = z.object({bankUrl: z.string().max(128).optional(), bin: z.string().max(64).optional(), brand: z.string().max(64).optional(), category: z.string().max(128).optional(), commercial: z.boolean().optional(), country: z.string().max(64).optional(), gift: z.boolean().optional(), issuer: z.string().max(128).optional(), lat: z.number().optional(), lon: z.number().optional(), prepaid: z.boolean().optional(), type: z.string().max(64).optional(), virtual: z.boolean().optional()}); export const bankCardRiskScoreInfo = z.object({binInfo: bankCardBinInfo.optional(), countryIpMatch: imageTestAnswer.optional(), countryMatch: imageTestAnswer.optional(), crossCheck: imageTestAnswer.optional(), emailFirstSeenAt: z.string().optional(), freeEmail: z.boolean().optional(), highRiskEmailCheck: imageTestAnswer.optional(), ipCountry: z.string().optional(), ipRiskScore: z.number().optional(), nameMatch: imageTestAnswer.optional(), riskScore: z.number().optional(), unexpired: imageTestAnswer.optional()}); export const bankCardCheckInfo = z.object({answer: imageTestAnswer.optional(), inputData: bankCardCheckInputData.optional(), riskScoreInfo: bankCardRiskScoreInfo.optional(), unexpired: imageTestAnswer.optional()}); export const cryptoAddressClusterInfo = z.object({category: z.string().optional(), name: z.string().optional()}); export const exposureType = z.enum(["direct", "indirect"]); export const cryptoAddressExposureInfo = z.object({amountInDefaultCurrency: z.number().optional(), amountUsd: z.number().optional(), category: z.string().optional(), exposureType: exposureType.optional(), riskLevel: imageTestAnswer.optional(), riskLevelRaw: z.string().optional(), triggerMessage: z.string().optional()}); export const cryptoAddressIdentificationInfo = z.object({category: z.string().optional(), description: z.string().optional(), name: z.string().optional()}); export const riskLevel = z.enum(["Low", "Medium", "High", "Severe"]); export const cryptoAddressTriggerInfo = z.object({category: z.string().optional(), exposureType: exposureType.optional(), message: z.string().optional(), percentage: z.number().optional(), riskLevel: imageTestAnswer.optional(), riskLevelRaw: z.string().optional()}); export const cryptoAddressAlertInfo = z.object({address: z.string().optional(), cluster: cryptoAddressClusterInfo.optional(), exposures: z.array(cryptoAddressExposureInfo).optional(), identifications: z.array(cryptoAddressIdentificationInfo).optional(), reason: z.string().optional(), riskLevel: imageTestAnswer.optional(), riskLevelRaw: riskLevel.optional(), triggers: z.array(cryptoAddressTriggerInfo).optional()}); export const cryptoAlertInfo = z.object({alertAmountInDefaultCurrency: z.number().optional(), alertAmountUsd: z.number().optional(), alertLevel: imageTestAnswer.optional(), category: z.string().optional(), exposureType: exposureType.optional(), riskLevelRaw: riskLevel.optional(), service: z.string().optional()}); export const chainalysisMonitorDataResult = z.object({addressAlert: cryptoAddressAlertInfo.optional(), alerts: z.array(cryptoAlertInfo).optional(), alertsAnswer: imageTestAnswer.optional(), alertsRiskLevelRaw: riskLevel.optional(), assetSupported: z.boolean().optional(), externalId: z.string().optional()}); export const cipherOwlRiskContribution = z.object({category: z.string().optional(), direction: z.string().optional(), hops: z.number().int().optional(), riskContribution: z.number().optional(), usdValue: z.number().optional()}); export const cipherOwlWalletScreeningResult = z.object({address: z.string().optional(), answer: imageTestAnswer.optional(), breakdown: z.array(cipherOwlRiskContribution).optional(), chain: z.string().optional(), chainSupported: z.boolean().optional(), config: z.string().optional(), foundRisk: z.boolean().optional(), reportingAvailable: z.boolean().optional(), riskBand: z.string().optional(), riskScore: z.number().optional(), version: z.string().optional()}); export const cipherOwlMonitorDataResult = z.object({walletScreening: cipherOwlWalletScreeningResult.optional()}); export const crystalEntity = z.object({country: z.string().optional(), currency: z.array(z.string()).optional(), currencyBasic: z.array(z.string()).optional(), getnTx: z.number().int().optional(), globalId: z.number().int().optional(), grade: z.string().optional(), name: z.string().optional(), slug: z.string().optional(), subtype: z.string().optional(), type: z.string().optional()}); export const crystalCounterpartyConnections = z.object({atm: z.number().optional(), child_exploitation: z.number().optional(), dark_market: z.number().optional(), dark_service: z.number().optional(), enforcement_action: z.number().optional(), exchange: z.number().optional(), exchange_fraudulent: z.number().optional(), exchange_licensed: z.number().optional(), exchange_mlrisk_high: z.number().optional(), exchange_mlrisk_low: z.number().optional(), exchange_mlrisk_moderate: z.number().optional(), exchange_mlrisk_veryhigh: z.number().optional(), exchange_unlicensed: z.number().optional(), gambling: z.number().optional(), illegal_service: z.number().optional(), liquidity_pools: z.number().optional(), marketplace: z.number().optional(), miner: z.number().optional(), mixer: z.number().optional(), other: z.number().optional(), p2p_exchange_licensed: z.number().optional(), p2p_exchange_mlrisk_high: z.number().optional(), p2p_exchange_mlrisk_low: z.number().optional(), p2p_exchange_unlicensed: z.number().optional(), payment: z.number().optional(), ransom: z.number().optional(), sanctions: z.number().optional(), scam: z.number().optional(), seized_assets: z.number().optional(), stolen_coins: z.number().optional(), terrorism_financing: z.number().optional(), trusted_exchange: z.number().optional(), wallet: z.number().optional()}); export const crystalSignals = z.object({received: crystalCounterpartyConnections.optional(), sent: crystalCounterpartyConnections.optional()}); export const crystalCounterparty = z.object({address: z.string().optional(), blocklist: z.boolean().optional(), entity: crystalEntity.optional(), received: z.number().optional(), riskScore: z.number().optional(), sent: z.number().optional(), signals: crystalSignals.optional(), tags: z.array(z.string()).optional(), type: z.string().optional()}); export const crystalMonitorDataResultV2 = z.object({amount: z.number().optional(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), blockchains: z.array(z.string()).optional(), counterparty: crystalCounterparty.optional(), fiat: z.number().optional(), signals: crystalCounterpartyConnections.optional(), time: z.string().optional()}); export const riskType = z.object({name: z.string().optional(), riskScore: z.string().optional()}); export const categoryScore = z.object({riskScore: z.string().optional(), riskTypes: z.array(riskType).optional()}); export const cyversAddressComplianceEntity = z.object({name: z.string().optional()}); export const cyversAddressComplianceResult = z.object({address: z.string().optional(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), blockchainPlatform: z.string().optional(), compliance: categoryScore.optional(), entity: cyversAddressComplianceEntity.optional(), label: z.string().optional(), riskScore: z.string().optional(), scam: categoryScore.optional(), security: categoryScore.optional(), tags: z.array(z.string()).optional(), whitelisted: z.boolean().optional()}); export const cyversAddressFraudResult = z.object({address: z.string().optional(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), blockchainPlatform: z.string().optional(), riskCategory: z.string().optional(), riskScore: z.string().optional(), riskType: z.string().optional(), whitelisted: z.boolean().optional()}); export const cyversMonitorDataResult = z.object({addressCompliance: cyversAddressComplianceResult.optional(), addressFraud: cyversAddressFraudResult.optional()}); export const addressInfo = z.object({hasReceived: z.boolean().optional(), hasSent: z.boolean().optional()}); export const amount = z.object({nativeAmount: z.number().optional(), nativeMajor: z.number().optional(), usd: z.number().optional()}); export const label = z.object({category: z.string().optional(), isPrimaryEntity: z.boolean().optional(), name: z.string().optional(), primaryEntity: z.boolean().optional()}); export const transactionIO = z.object({amount: amount.optional(), hash: z.string().optional(), index: z.number().int().optional(), labels: z.array(label).optional()}); export const transactionInfo = z.object({inputs: z.array(transactionIO).optional(), outputs: z.array(transactionIO).optional(), time: z.string().optional(), value: amount.optional()}); export const transferBlockchainInfo = z.object({address: addressInfo.optional(), transaction: transactionInfo.optional(), value: z.string().optional()}); export const value = z.object({usd: z.number().optional()}); export const txnAnalysisContributionEntity = z.object({actorId: z.number().int().optional(), category: z.string().optional(), categoryId: z.string().optional(), entityId: z.string().optional(), isPrimaryEntity: z.boolean().optional(), isVasp: z.boolean().optional(), name: z.string().optional(), primaryEntity: z.boolean().optional(), vasp: z.boolean().optional()}); export const txnAnalysisContribution = z.object({contributionPercentage: z.number().optional(), contributionValue: value.optional(), counterpartyPercentage: z.number().optional(), counterpartyValue: value.optional(), entities: z.array(txnAnalysisContributionEntity).optional(), indirectPercentage: z.number().optional(), indirectValue: value.optional(), isScreenedAddress: z.boolean().optional(), minNumberOfHops: z.number().int().optional(), screenedAddress: z.boolean().optional()}); export const ellipticTransferMonitoringResult = z.object({analysisId: z.string(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), blockchainInfo: transferBlockchainInfo.optional(), contributions: z.array(txnAnalysisContribution).optional(), dustTransaction: z.boolean().optional(), processStatus: z.string().optional(), riskScore: z.number().optional()}); export const ellipticAssetTier = z.enum(["full", "sanctions"]); export const blockchainInfo = z.object({incomingTotal: z.number().optional(), outgoingTotal: z.number().optional()}); export const direction = z.enum(["in", "out"]); export const contributionEntity = z.object({category: z.string().optional(), name: z.string().optional(), vasp: z.boolean().optional()}); export const walletExposureContribution = z.object({amount: z.number().optional(), direction: direction.optional(), entity: contributionEntity.optional(), minNumberOfHops: z.number().int().optional(), percentage: z.number().optional()}); export const externalRule = z.object({name: z.string().optional(), type: z.string().optional()}); export const ellipticWalletExposureMonitorDataResult = z.object({analysisId: z.string().optional(), assetSupported: z.boolean().optional(), assetTier: ellipticAssetTier.optional(), blockchainInfo: blockchainInfo.optional(), contributions: z.array(walletExposureContribution).optional(), riskScore: z.number().optional(), triggeredRules: z.array(externalRule).optional(), updatedAt: z.string().optional()}); export const ellipticMonitorDataResult = z.object({transferScreening: ellipticTransferMonitoringResult.optional(), walletExposure: ellipticWalletExposureMonitorDataResult.optional()}); export const inputOutput = z.object({address: z.string().optional(), amount: z.number().optional(), vaspId: z.string().optional()}); export const kytTxnCryptoExplorerInfo = z.object({amountInputs: z.number().optional(), amountOutputs: z.number().optional(), countInputs: z.number().int().optional(), countOutputs: z.number().int().optional(), inputs: z.array(inputOutput).optional(), outputs: z.array(inputOutput).optional()}); export const exposure = z.object({exposureType: z.string().optional(), tagNameVerbose: z.string().optional(), tagSubtypeVerbose: z.string().optional(), tagTypeVerbose: z.string().optional(), totalValueUsd: z.string().optional()}); export const digitalAsset = z.object({name: z.string().optional(), symbol: z.string().optional(), value: z.string().optional(), valueUsd: z.string().optional()}); export const merkleTransferMonitoringResult = z.object({address: z.string().optional(), assetSupported: z.boolean().optional(), beneficiary: z.array(exposure).optional(), blockTimestamp: z.string().optional(), blockchain: z.number().int().optional(), blockchainVerbose: z.string().optional(), createdAt: z.string().optional(), customerId: z.string().optional(), digitalAssets: z.array(digitalAsset).optional(), fee: z.string().optional(), feeUsd: z.string().optional(), identifier: z.string().optional(), originator: z.array(exposure).optional(), riskLevel: z.number().int().optional(), riskLevelVerbose: z.string().optional(), type: z.number().int().optional(), typeVerbose: z.string().optional(), updatedAt: z.string().optional(), value: z.string().optional(), valueUsd: z.string().optional()}); export const partyExposure = z.object({exposureType: z.string().optional(), tagNameVerbose: z.string().optional(), tagSubTypeVerbose: z.string().optional(), tagTypeVerbose: z.string().optional(), totalValueUsd: z.string().optional()}); export const tag = z.object({tagNameVerbose: z.string().optional(), tagSubTypeVerbose: z.string().optional(), tagTypeVerbose: z.string().optional()}); export const tags = z.object({owner: tag.optional(), user: tag.optional()}); export const merkleWalletScreeningResult = z.object({assetSupported: z.boolean().optional(), balance: z.string().optional(), beneficiary: z.array(partyExposure).optional(), blockchain: z.number().int().optional(), blockchainVerbose: z.string().optional(), createdAt: z.string().optional(), customTags: z.array(z.string()).optional(), customerId: z.string().optional(), digitalAssets: z.array(digitalAsset).optional(), earliestTransactionTime: z.string().optional(), identifier: z.string().optional(), latestTransactionTime: z.string().optional(), originator: z.array(partyExposure).optional(), riskLevel: z.number().int().optional(), riskLevelVerbose: z.string().optional(), tags: tags.optional(), totalIncomingValue: z.string().optional(), totalIncomingValueUsd: z.string().optional(), totalOutgoingValue: z.string().optional(), totalOutgoingValueUsd: z.string().optional(), type: z.number().int().optional(), typeVerbose: z.string().optional(), updatedAt: z.string().optional()}); export const merkleMonitorDataResult = z.object({transferScreening: merkleTransferMonitoringResult.optional(), walletScreening: merkleWalletScreeningResult.optional()}); export const nominisExposure = z.object({amount: z.number().optional(), coin: z.string().optional(), coinName: z.string().optional(), firstTx: z.number().int().optional(), lastTx: z.number().int().optional(), proximity: z.number().optional(), receiver: z.string().optional(), receiverClassification: z.array(z.string()).optional(), receiverName: z.string().optional(), receiverQuickScore: z.string().optional(), receiverRiskFactors: z.array(z.string()).optional(), sender: z.string().optional(), senderClassification: z.array(z.string()).optional(), senderName: z.string().optional(), senderQuickScore: z.string().optional(), senderRiskFactors: z.array(z.string()).optional(), totalTx: z.number().int().optional(), usdValue: z.number().optional()}); export const nominisRiskCategory = z.object({classification: z.string().optional(), proximity: z.array(z.number().int()).optional()}); export const nominisTransferScreeningResult = z.object({answer: imageTestAnswer.optional(), behavioralIndicators: z.array(z.string()).optional(), chain: z.string().optional(), chainSupported: z.boolean().optional(), createdAt: z.number().int().optional(), depth: z.number().int().optional(), exposure: z.array(nominisExposure).optional(), requestId: z.string().optional(), riskCategories: z.array(nominisRiskCategory).optional(), riskScore: z.string().optional(), txHash: z.string().optional(), usdValue: z.number().optional()}); export const nominisGeoSignal = z.object({country: z.string().optional(), share: z.number().optional()}); export const nominisWalletScreeningResult = z.object({address: z.string().optional(), addressName: z.string().optional(), answer: imageTestAnswer.optional(), chain: z.string().optional(), chainSupported: z.boolean().optional(), classification: z.array(z.string()).optional(), depth: z.number().int().optional(), exposure: z.array(nominisExposure).optional(), geoSignals: z.array(nominisGeoSignal).optional(), requestId: z.string().optional(), riskCategories: z.array(nominisRiskCategory).optional(), riskFactors: z.array(z.string()).optional(), riskScore: z.string().optional(), riskScoreNumeric: z.number().optional(), screeningMode: z.string().optional()}); export const nominisMonitorDataResult = z.object({transferScreening: nominisTransferScreeningResult.optional(), walletScreening: nominisWalletScreeningResult.optional()}); export const trmLabsTransferMonitoringAlert = z.object({accountUuid: z.string().optional(), closedAt: z.string().optional(), closedJustification: z.string().optional(), closedReason: z.string().optional(), issuedAt: z.string().optional(), ownedByUserEmail: z.string().optional(), riskScoreLevel: z.number().int().optional(), riskScoreLevelLabel: z.string().optional(), ruleUuid: z.string().optional(), status: z.string().optional(), statusUpdatedAt: z.string().optional(), statusUpdatedByUserEmail: z.string().optional(), transferAccountExternalId: z.string().optional(), transferExternalId: z.string().optional(), transferUuid: z.string().optional(), trmAppUrl: z.string().optional(), updatedAt: z.string().optional(), updatedByUserEmail: z.string().optional(), uuid: z.string().optional(), valid: z.boolean().optional()}); export const trmLabsTransferMonitoringResult = z.object({accountExternalId: z.string().optional(), accountUuid: z.string().optional(), alerts: z.array(trmLabsTransferMonitoringAlert).optional(), answer: imageTestAnswer.optional(), asset: z.string().optional(), assetAmount: z.string().optional(), assetSupported: z.boolean().optional(), chain: z.string().optional(), destinationAddress: z.string().optional(), externalId: z.string().optional(), fiatCurrency: z.string().optional(), fiatValue: z.string().optional(), onchainReference: z.string().optional(), riskScoreLevel: z.number().int().optional(), riskScoreLevelLabel: z.string().optional(), screenStatus: z.string().optional(), screenStatusFailedReason: z.string().optional(), submittedAt: z.string().optional(), timestamp: z.string().optional(), transferType: z.string().optional(), trmAppUrl: z.string().optional(), uuid: z.string().optional()}); export const riskIndicator = z.object({category: z.string().optional(), categoryId: z.string().optional(), categoryRiskScoreLevel: z.number().int().optional(), categoryRiskScoreLevelLabel: z.string().optional(), incomingVolumePercent: z.string().optional(), incomingVolumeUsd: z.string().optional(), outgoingVolumePercent: z.string().optional(), outgoingVolumeUsd: z.string().optional(), riskType: z.string().optional(), totalVolumePercent: z.string().optional(), totalVolumeUsd: z.string().optional()}); export const trmLabsWalletScreeningEntity = z.object({category: z.string().optional(), categoryId: z.string().optional(), confidenceScoreLabel: z.string().optional(), entity: z.string().optional(), riskScoreLevel: z.number().int().optional(), riskScoreLevelLabel: z.string().optional(), trmAppUrl: z.string().optional(), trmUrn: z.string().optional()}); export const trmLabsWalletScreeningResult = z.object({accountExternalId: z.string().optional(), accountUuid: z.string().optional(), address: z.string().optional(), addressHighestRiskScoreLevel: z.number().int().optional(), addressHighestRiskScoreLevelLabel: z.string().optional(), addressIncomingVolumeUsd: z.string().optional(), addressOutgoingVolumeUsd: z.string().optional(), addressRiskIndicators: z.array(riskIndicator).optional(), addressSubmitted: z.string().optional(), addressTotalVolumeUsd: z.string().optional(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), chain: z.string().optional(), entities: z.array(trmLabsWalletScreeningEntity).optional(), externalId: z.string().optional(), trmAppUrl: z.string().optional()}); export const trmLabsMonitorDataResult = z.object({transferScreening: trmLabsTransferMonitoringResult.optional(), walletScreening: trmLabsWalletScreeningResult.optional()}); export const riskScoreEntitySignals = z.object({atm: z.number().optional(), child_exploitation: z.number().optional(), dark_market: z.number().optional(), dark_service: z.number().optional(), enforcement_action: z.number().optional(), exchange: z.number().optional(), exchange_fraudulent: z.number().optional(), exchange_licensed: z.number().optional(), exchange_mlrisk_high: z.number().optional(), exchange_mlrisk_low: z.number().optional(), exchange_mlrisk_moderate: z.number().optional(), exchange_mlrisk_veryhigh: z.number().optional(), exchange_unlicensed: z.number().optional(), gambling: z.number().optional(), illegal_service: z.number().optional(), liquidity_pools: z.number().optional(), marketplace: z.number().optional(), miner: z.number().optional(), mixer: z.number().optional(), other: z.number().optional(), p2p_exchange_licensed: z.number().optional(), p2p_exchange_mlrisk_high: z.number().optional(), p2p_exchange_mlrisk_low: z.number().optional(), p2p_exchange_unlicensed: z.number().optional(), payment: z.number().optional(), ransom: z.number().optional(), sanctions: z.number().optional(), scam: z.number().optional(), seized_assets: z.number().optional(), stolen_coins: z.number().optional(), terrorism_financing: z.number().optional(), trusted_exchange: z.number().optional(), wallet: z.number().optional()}); export const txnMonitorCounterpartySignals = z.object({bwd: riskScoreEntitySignals.optional(), fwd: riskScoreEntitySignals.optional()}); export const txnMonitorCounterparty = z.object({address: z.string().optional(), id: z.string().optional(), name: z.string().optional(), receivedFiatAmount: z.number().optional(), sentFiatAmount: z.number().optional(), signals: txnMonitorCounterpartySignals.optional()}); export const crystalMonitorDataResult = z.object({address: z.string().optional(), amount: z.number().int().optional(), answer: imageTestAnswer.optional(), assetSupported: z.boolean().optional(), counterparty: txnMonitorCounterparty.optional(), counterpartyAddress: z.string().optional(), direction: z.string().optional(), fiat: z.number().int().optional(), fiatCode: z.string().optional(), fiatInDefaultCurrency: z.number().optional(), id: z.string().optional(), riskLevel: z.string().optional(), riskscore: z.number().optional(), riskyVolume: z.number().optional(), riskyVolumeFiat: z.number().optional(), riskyVolumeFiatInDefaultCurrency: z.number().optional(), signals: riskScoreEntitySignals.optional(), status: z.string().optional(), time: z.string().optional(), txn: z.string().optional(), updatedAt: z.string().optional()}); export const cryptoTxnRiskScoreInfo = z.object({answer: imageTestAnswer.optional(), chainalysisMonitorData: chainalysisMonitorDataResult.optional(), cipherOwlMonitorData: cipherOwlMonitorDataResult.optional(), crystalMonitorData: crystalMonitorDataResultV2.optional(), cyversMonitorData: cyversMonitorDataResult.optional(), ellipticMonitorData: ellipticMonitorDataResult.optional(), errorName: z.string().optional(), explorerInfo: kytTxnCryptoExplorerInfo.optional(), merkleMonitorData: merkleMonitorDataResult.optional(), nominisMonitorData: nominisMonitorDataResult.optional(), trmLabsMonitorData: trmLabsMonitorDataResult.optional(), txnMonitorData: crystalMonitorDataResult.optional()}); export const txnPresenceCheckInfo = z.object({answer: imageTestAnswer.optional(), imageIds: z.array(z.number().int()).optional()}); export const paymentSourceRiskCheck = z.object({answer: imageTestAnswer.optional(), attemptId: z.string().optional(), bankAccountCheckInfo: bankAccountCheckInfo.optional(), bankCardCheckInfo: bankCardCheckInfo.optional(), createdAt: z.string().optional(), cryptoWalletCheckInfo: cryptoTxnRiskScoreInfo.optional(), error: z.string().max(512).optional(), txnPresenceCheckInfo: txnPresenceCheckInfo.optional(), type: paymentSourceType.optional()}); export const paymentSourceCheckInfo = z.object({crossCheck: paymentSourceCrossCheck.optional(), extractedInfo: paymentSourceInfo.optional(), inputData: paymentSourceCheckInputData.optional(), ownershipCheck: paymentSourceOwnershipCheck.optional(), riskCheck: paymentSourceRiskCheck.optional()}); export const passportValidityCode = z.string(); export const personBackgroundInfo = z.object({crossCheckDetails: crossCheckDetails.optional(), identityAnswer: imageTestAnswer.optional(), passportValidity: z.boolean().optional(), passportValidityCode: passportValidityCode.optional()}); export const phoneNetworkIntelligence = z.object({activeDaysCount: z.number().int().optional(), activityCountRaw: z.number().int().optional(), activityIndex: z.number().int().optional(), activityLifetimeDays: z.number().int().optional(), avgReuseIntervalDays: z.number().int().optional(), currentNetworkIsPremium: z.boolean().optional(), digitalSophisticationIndex: z.number().int().optional(), diversityIndex: z.number().int().optional(), firstSeenDays: z.number().int().optional(), globalPlatformRatio: z.number().optional(), lastSeenDays: z.number().int().optional(), messagingGlobalPlatformCount: z.number().int().optional(), totalPlatformCount: z.number().int().optional(), velocity1d: z.number().int().optional(), velocity1dIndex: z.number().int().optional(), velocity30d: z.number().int().optional(), velocity30dIndex: z.number().int().optional(), velocity360d: z.number().int().optional(), velocity360dIndex: z.number().int().optional(), velocity7d: z.number().int().optional(), velocity7dIndex: z.number().int().optional(), velocity90d: z.number().int().optional(), velocity90dIndex: z.number().int().optional(), whatsappProfileCompleteness: imageTestAnswer.optional()}); export const phoneRiskLabel = z.enum(["mediumRisk", "highRisk", "virtual", "noWebRegistrations", "disposable", "freshPhone", "phoneCountryVsApplicantCountryMismatch", "phoneCountryVsIpCountryMismatch", "phoneCountryVsAddressCountryMismatch", "phoneCountryVsEmailDomainCountryMismatch", "phoneCountryVsCompanyCountryMismatch"]); export const phoneConfirmationCheckInfo = z.object({active: imageTestAnswer.optional(), blocklisted: z.boolean().optional(), confirmedViaOtp: imageTestAnswer.optional(), firstSeenAt: z.string().optional(), freshPhone: imageTestAnswer.optional(), intelligence: phoneNetworkIntelligence.optional(), nonDisposable: imageTestAnswer.optional(), nonVirtual: imageTestAnswer.optional(), phone: z.string().optional(), profiles: z.array(z.string()).optional(), riskLabels: z.array(phoneRiskLabel).optional(), riskLevel: imageTestAnswer.optional(), valid: imageTestAnswer.optional(), webRegistrationsExist: imageTestAnswer.optional(), whitelisted: z.boolean().optional()}); export const poaCompanyContactType = z.enum(["governmentOrganization", "utilityProvider", "bank", "mobileOperator", "other"]); export const poaCompanyContact = z.object({type: poaCompanyContactType.optional()}); export const poaSubType = z.string(); export const poaCheckInfo = z.object({acceptableCountry: imageTestAnswer.optional(), acceptableDocumentName: imageTestAnswer.optional(), acceptableLanguage: imageTestAnswer.optional(), acceptableOrganization: imageTestAnswer.optional(), acceptableRegion: imageTestAnswer.optional(), acceptableType: imageTestAnswer.optional(), answer: imageTestAnswer.optional(), companyContact: poaCompanyContact.optional(), notSameDoc: imageTestAnswer.optional(), poaIdDocType: idDocType.optional(), poiAsPoa: z.boolean().optional(), poiPoaCountryMatched: imageTestAnswer.optional(), subType: poaSubType.optional(), unconventionalProvider: z.boolean().optional(), unexpired: imageTestAnswer.optional(), validAddress: imageTestAnswer.optional()}); export const documentLivenessAssessmentVerdict = z.object({answer: imageTestAnswer.optional()}); export const documentLivenessAssessmentVerdicts = z.object({forgery: documentLivenessAssessmentVerdict.optional(), graphicEditor: documentLivenessAssessmentVerdict.optional(), photocopy: documentLivenessAssessmentVerdict.optional(), printout: documentLivenessAssessmentVerdict.optional(), screenshot: documentLivenessAssessmentVerdict.optional()}); export const documentLivenessCheckInfo = z.object({verdicts: documentLivenessAssessmentVerdicts.optional()}); export const poiCheckInfo = z.object({acceptableAge: imageTestAnswer.optional(), acceptablePageCnt: imageTestAnswer.optional(), allowedCountry: imageTestAnswer.optional(), allowedDocType: imageTestAnswer.optional(), documentLiveness: documentLivenessCheckInfo.optional(), unexpired: imageTestAnswer.optional()}); export const arbitraryDocRiskLabel = z.literal("imagesConvertedToPdf"); export const itemStatus = z.object({errors: z.array(error).optional(), imageId: z.string().optional(), itemId: z.string().optional(), riskLabels: z.array(arbitraryDocRiskLabel).optional(), sectionId: z.string().optional()}); export const questionnaireCheckInfo = z.object({itemStatuses: z.array(itemStatus).optional(), questionnaireId: z.string().optional()}); export const realTimeIdentificationRecordingReviewMode = z.enum(["managedReview", "clientReview", "autoReview"]); export const realTimeIdentificationRecordingInfo = z.object({rejectLabels: z.array(reviewLabel).optional(), rejectType: reviewRejectType.optional(), reviewMode: realTimeIdentificationRecordingReviewMode.optional(), reviewedAt: z.string().optional()}); export const residencyCheckInfo = z.object({addressMatch: imageTestAnswer.optional(), answer: imageTestAnswer.optional(), crossCheckDetails: crossCheckDetails.optional(), dobMatch: imageTestAnswer.optional(), nameMatch: imageTestAnswer.optional(), numberMatch: imageTestAnswer.optional(), verificationType: z.string().optional()}); export const bgDataGroupType = z.enum(["poi", "poi2", "poi3", "poi4", "poa", "poa2", "email", "phone", "applicantData", "questionnaire", "questionnaire2", "questionnaire3", "questionnaire4", "duplicateCheck", "crossCheck", "liveness", "faceMatch"]); export const reusableKycReportDataGroup = z.object({answer: imageTestAnswer.optional(), checkId: z.string().max(64).optional(), type: bgDataGroupType.optional()}); export const reuseIdentityRequestParams = z.object({preservedVerificationStatus: z.boolean().optional(), requireFreshSelfie: z.boolean().optional()}); export const reusableKycReportInfo = z.object({dataGroups: z.array(reusableKycReportDataGroup).optional(), forLevelName: z.string().optional(), fromClientId: z.string().optional(), params: reuseIdentityRequestParams.optional()}); export const solanaAttestationCheckInfo = z.object({attestationPda: z.string().optional(), challengeMessage: z.string().optional(), consentGiven: z.boolean().optional(), signature: z.string().optional(), signingProvider: z.string().optional(), walletAddress: z.string().optional()}); export const sourceInfo = z.object({demo: z.boolean().optional(), id: z.string().optional()}); export const companyTaxCheckInfo = z.object({answer: imageTestAnswer.optional()}); export const tinCheckInfo = z.object({answer: imageTestAnswer.optional(), personDataMatchFound: imageTestAnswer.optional(), tinValidity: imageTestAnswer.optional()}); export const trackingData = z.object({applicantId: z.string().optional(), deviceFingerprint: z.string().optional(), externalDeviceFingerprint: z.string().optional(), idDocSetType: idDocSetType.optional(), ip: z.string().optional(), languages: z.array(z.string().max(8)).optional(), sessionId: z.string().optional(), timezoneOffset: z.string().max(10).optional(), userAgent: z.string().optional(), xClientId: z.string().optional(), xClientVersion: z.string().optional()}); export const videoIdentCompositionSubtitle = z.object({fileName: z.string().optional(), language: z.string().optional()}); export const videoIdentComposition = z.object({compositionCreatedAt: z.string().optional(), compositionDuration: z.number().int().optional(), compositionFileName: z.string().optional(), compositionMediaId: z.string().optional(), compositionSid: z.string().optional(), deletedAt: z.string().optional(), local: z.boolean().optional(), roomCreatedAt: z.string().optional(), roomDuration: z.number().int().optional(), roomSid: z.string().optional(), subtitles: z.array(videoIdentCompositionSubtitle).optional()}); export const documentSecurityFeature = z.object({name: z.string().optional()}); export const videoIdentInfo = z.object({callEndedAt: z.string().optional(), callStartedAt: z.string().optional(), compositions: z.array(videoIdentComposition).optional(), language: z.string().optional(), moderatorDisplayName: z.string().optional(), roomSid: z.string().optional(), securityFeatures: z.array(documentSecurityFeature).optional()}); export const videoSelfieInfo = z.object({selfiePhrase: z.string().optional(), transciption: z.array(z.string()).optional()}); export const walletOwnershipCheckInfo = z.object({blockchain: z.string().optional(), challengeMessage: z.string().optional(), signature: z.string().optional(), signingProvider: z.string().optional(), walletAddress: z.string().optional()}); export const backgroundCheck = z.object({aiInquiriesInfo: aiInquiriesInfo.optional(), amlCaseInfo: amlCaseInfo.optional(), answer: imageTestAnswer.optional(), answerFixed: z.boolean().optional(), applicantDataCheckInfo: applicantDataCheckInfo.optional(), attemptId: z.string().optional(), authorizedEmploymentInfo: authorizedEmploymentInfo.optional(), autoCheckInfo: autoCheckInfo.optional(), bankDetailsCheckInfo: bankDetailsCheckInfo.optional(), chainlinkAttestationCheckInfo: chainlinkAttestationCheckInfo.optional(), checkType: backgroundCheckType.optional(), clientRegulationsInfo: clientRegulationsInfo.optional(), companyAddressesCheckInfo: companyAddressesCheckInfo.optional(), companyCheckInfo: companyCheckInfo.optional(), companyStructureCheckInfo: companyStructureCheckInfo.optional(), companyWebPresenceCheckInfo: companyWebPresenceCheckInfo.optional(), copyOf: z.string().optional(), createdAt: z.string().optional(), crossCheckInfo: crossCheckInfo.optional(), customDataSourceCheckInfo: customDataSourceCheckInfo.optional(), databasePersonCheckInfo: databasePersonCheckInfo.optional(), deactivated: z.boolean().optional(), detailedPersonHitsInfo: detailedPersonHitsInfo.optional(), deviceCheckInfo: deviceCheckInfo.optional(), digitalFootprintInfo: digitalFootprintInfo.optional(), driverBackgroundInfo: driverBackgroundInfo.optional(), ekycCheckInfo: ekycCheckInfo.optional(), emailConfirmationCheckInfo: emailConfirmationCheckInfo.optional(), errorMessage: z.string().optional(), esignCheckInfo: esignCheckInfo.optional(), executionInfo: executionInfo.optional(), extractedDoc: backgroundCheckExtractedData.optional(), faceMatchInfo: faceMatchInfo.optional(), id: z.string().optional(), imageIds: z.array(z.number().int()).optional(), inputDoc: backgroundCheckInputData.optional(), ipCheckInfo: ipCheckInfo.optional(), labels: z.array(z.string()).optional(), lineaAttestationCheckInfo: lineaAttestationCheckInfo.optional(), livenessInfo: livenessInfo.optional(), nfcCheckInfo: nfcCheckInfo.optional(), paymentSourceCheckInfo: paymentSourceCheckInfo.optional(), personBackgroundInfo: personBackgroundInfo.optional(), phoneConfirmationCheckInfo: phoneConfirmationCheckInfo.optional(), poaCheckInfo: poaCheckInfo.optional(), poiCheckInfo: poiCheckInfo.optional(), questionnaireCheckInfo: questionnaireCheckInfo.optional(), realTimeIdentificationRecordingInfo: realTimeIdentificationRecordingInfo.optional(), referenceChecksIds: z.array(z.string()).optional(), residencyCheckInfo: residencyCheckInfo.optional(), reusableKycReportInfo: reusableKycReportInfo.optional(), reviewId: z.string().optional(), solanaAttestationCheckInfo: solanaAttestationCheckInfo.optional(), sourceInfo: sourceInfo.optional(), taxCheckInfo: companyTaxCheckInfo.optional(), tinCheckInfo: tinCheckInfo.optional(), trackingData: trackingData.optional(), vehicleInfo: vehicleInfo.optional(), videoIdentInfo: videoIdentInfo.optional(), videoSelfieInfo: videoSelfieInfo.optional(), violations: z.array(backgroundCheckViolation).optional(), walletOwnershipCheckInfo: walletOwnershipCheckInfo.optional()}); export const resolution = z.object({height: z.number().int().optional(), width: z.number().int().optional()}); export const eSignFieldMapping = z.object({fieldName: z.string().max(256), fillAtSigning: z.boolean().optional(), valueExpr: z.string().max(2048)}); export const eSignSignaturePageSetting = z.object({height: z.number().int().optional(), page: z.number().int().optional(), width: z.number().int().optional(), x: z.number().int().optional(), y: z.number().int().optional()}); export const eSignSignatureSetting = z.object({pages: z.array(eSignSignaturePageSetting).optional()}); export const eSignDocSetting = z.object({agreementText: z.string().max(1000).optional(), fieldMappings: z.array(eSignFieldMapping).optional(), fieldNames: z.array(z.string().max(256)).optional(), fileImageId: z.string().max(64).optional(), imageFileName: z.string().max(128).optional(), optional: z.boolean().optional(), signatures: z.array(eSignSignatureSetting).optional()}); export const inspectionImageResultAdditionalData = z.object({geteSignDocSettingData: eSignDocSetting.optional()}); export const coords = z.object({latitude: z.number().optional(), longitude: z.number().optional()}); export const boundingBox = z.object({height: z.number().optional(), width: z.number().optional(), x: z.number().optional(), y: z.number().optional()}); export const imageExtractedInfo = z.object({documentPageBox: boundingBox.optional(), documentSecurityFeatures: z.array(documentSecurityFeature).optional(), faceBox: boundingBox.optional(), ocrDocType: z.string().optional(), pagesCnt: z.number().int().optional(), problems: z.array(z.string()).optional(), requiredFields: z.array(z.string()).optional(), screenRecapture: z.boolean().optional(), unsatisfactoryAnswer: imageTestAnswer.optional()}); export const idDocSubType = z.enum(["FRONT_SIDE", "BACK_SIDE", "PAGES", "INCORPORATION_CERT", "INCORPORATION_ARTICLES", "ARTICLES_OF_ASSOCIATION", "PARTNERSHIP_AGREEMENT", "REGULATORY_LICENSE", "TRADE_LICENSE", "SHAREHOLDER_REGISTRY", "DIRECTORS_REGISTRY", "STATE_REGISTRY", "OWNERSHIP_STRUCTURE_CHART", "INCUMBENCY_CERT", "PROOF_OF_ADDRESS", "TAX_CERT", "PROOF_OF_NATURE_OF_BUSINESS", "SELF_DECLARATION_FORM", "POWER_OF_ATTORNEY", "PROOF_OF_DOMAIN", "TRUST_AGREEMENT", "INFORMATION_STATEMENT", "GOOD_STANDING_CERT", "OTHER"]); export const idDocDef = z.object({arbitraryDocType: z.string().optional(), country: z.string().optional(), idDocSubType: idDocSubType.optional(), idDocType: idDocType.optional(), pages: z.string().optional()}); export const imageTestComment = z.string(); export const imageTrust = z.object({comments: z.array(imageTestComment).optional(), trust: z.number().optional()}); export const mediaTypeId = z.string(); export const pixelMapImage = z.object({imageId: z.number().int().optional(), path: z.string().optional()}); export const pixelMap = z.object({answer: imageTestAnswer.optional(), images: z.array(pixelMapImage).optional(), type: z.string().optional()}); export const pdfMetadata = z.object({resolution: resolution, totalPages: z.number().int()}); export const reviewCreator = z.object({subjectName: z.string().max(256).optional()}); export const reviewResult = z.object({buttonIds: z.array(z.string()).optional(), clientComment: z.string().optional(), moderationComment: z.string().optional(), rejectLabels: z.array(reviewLabel).optional(), requiredAdditionalIdDocs: z.array(idDocDef).optional(), reviewAnswer: imageTestAnswer.optional(), reviewCreator: reviewCreator.optional(), reviewRejectType: reviewRejectType.optional()}); export const inspectionImageResult = z.object({actualResolution: resolution.optional(), addedDate: z.string().optional(), additionalData: inspectionImageResultAdditionalData.optional(), answer: imageTestAnswer.optional(), attemptId: z.string().optional(), contentDeleted: z.boolean().optional(), coords: coords.optional(), copiedAt: z.string().optional(), creationDate: z.string().optional(), creatorClientId: z.string().optional(), customMetadata: z.record(z.string(), z.string()).optional(), deleted: z.boolean().optional(), exifResolution: resolution.optional(), externalFaceId: z.string().optional(), externalHash: z.string().optional(), extractedInfo: imageExtractedInfo.optional(), faceAlbumName: z.string().optional(), fileSize: z.number().int().optional(), fullSoftwareMatches: z.boolean().optional(), hasConverterVideo: z.boolean().optional(), hasDebugVideo: z.boolean().optional(), id: z.string().optional(), idDocDef: idDocDef.optional(), imageFileName: z.string().optional(), imageHash: z.string().optional(), imageId: z.number().int().optional(), imageTrust: imageTrust.optional(), make: z.string().optional(), masked: z.boolean().optional(), mediaType: z.string().optional(), mimeType: mediaTypeId.optional(), model: z.string().optional(), modificationDate: z.string().optional(), originalImageHash: z.string().max(64).optional(), pixelMaps: z.array(pixelMap).optional(), renderedPdf: pdfMetadata.optional(), resizedImageId: z.number().int().optional(), reviewResult: reviewResult.optional(), software: z.array(z.string()).optional(), softwareTag: z.string().optional(), source: z.string().optional()}); export const paymentSourceCheck = z.object({answer: imageTestAnswer.optional(), applicantInfoMatched: imageTestAnswer.optional(), bankCardRiskScoreInfo: bankCardRiskScoreInfo.optional(), createdAt: z.string().optional(), fixedInfoMatched: imageTestAnswer.optional(), id: z.string().optional(), typeMatched: imageTestAnswer.optional(), unexpired: imageTestAnswer.optional(), unmatchedFields: z.array(z.string()).optional()}); export const paymentSourceChecksumTxn = z.object({amount: z.number(), currencyCode: z.string().min(1), date: z.string()}); export const paymentSourceChecksum = z.object({txns: z.array(paymentSourceChecksumTxn).optional()}); export const paymentSource = z.object({checks: z.array(paymentSourceCheck).optional(), checksum: paymentSourceChecksum.optional(), createdAt: z.string().optional(), crossChecks: z.array(paymentSourceCrossCheck).optional(), deleted: z.boolean().optional(), externalId: z.string().optional(), fixedInfo: paymentSourceInfo.optional(), id: z.string().optional(), info: paymentSourceInfo.optional(), ownershipChecks: z.array(paymentSourceOwnershipCheck).optional(), reviewResult: reviewResult.optional(), riskChecks: z.array(paymentSourceRiskCheck).optional(), trackingData: trackingData.optional()}); export const applicantDataSettings = z.object({prefill: z.boolean().optional()}); export const applicantIdDocSetCaptureMode = z.enum(["manualAndAuto", "manualOnly", "manualAfterTimeout", "seamless"]); export const checkSource = z.object({sourceId: z.string().optional()}); export const checkSourceConfig = z.object({sources: z.array(checkSource).optional()}); export const fallbackReason = z.string(); export const checkSourceExecutionConfiguration = z.object({fallbackReasons: z.array(fallbackReason), sourceId: z.string()}); export const checkSourceSettingsGroupType = z.string(); export const checkSourceCountrySettings = z.object({checkType: backgroundCheckType.optional(), country: z.string().optional(), executionConfigurations: z.array(checkSourceExecutionConfiguration).optional(), groupType: checkSourceSettingsGroupType.optional()}); export const checkSourceLevelSettings = z.object({countrySettings: z.array(checkSourceCountrySettings).optional()}); export const applicantIdDocSetField = z.object({immutableIfPresent: z.boolean().optional(), name: z.string(), prefill: z.boolean().optional(), required: z.boolean().optional()}); export const companyAddressGroupDefinition = z.object({addressType: companyAddressType.optional(), enableAddressGeoVerification: z.boolean().optional(), fields: z.array(applicantIdDocSetField).optional(), imageRequired: z.boolean().optional()}); export const companyBeneficiaryGroupCategory = z.enum(["ubos", "shareholders", "directors", "representatives", "companyOfficers", "secretaries", "founders", "investors", "legalAdvisors", "authorizedSignatories", "trustees", "trustBeneficiaries", "trustSettlors", "trustProtectors", "managingPartners", "equityPartners", "fundInvestors", "fundManagers", "investmentManagers", "investmentAdvisers", "fundAdministrators", "depositaries", "custodians", "primeBrokers", "accountUsers", "payers"]); export const applicantIdDocSetCustomField = z.object({displayName: z.string().optional(), immutableIfPresent: z.boolean().optional(), name: z.string(), required: z.boolean().optional()}); export const companyBeneficiaryTypeDefinition = z.object({customFields: z.array(applicantIdDocSetCustomField).optional(), enabled: z.boolean().optional(), fields: z.array(applicantIdDocSetField).optional(), levelName: z.string().optional()}); export const companyBeneficiaryGroupDefinition = z.object({canSkip: z.boolean().optional(), category: companyBeneficiaryGroupCategory.optional(), company: companyBeneficiaryTypeDefinition.optional(), individual: companyBeneficiaryTypeDefinition.optional(), maxAllowed: z.number().int().gte(1).lte(100).optional(), minRequired: z.number().int().gte(1).lte(100).optional()}); export const companyDocsGroupLabel = z.enum(["legalPresence", "companyDetails", "ownershipStructure", "controlStructure", "representativesAuthorization", "other1", "other2", "other3"]); export const companyDocsGroupDefinition = z.object({label: companyDocsGroupLabel.optional(), required: z.boolean().optional(), subTypes: z.array(idDocSubType).optional()}); export const emailVerificationSettings = z.object({immutableEmailIfPresent: z.boolean().optional()}); export const eSignSettings = z.object({docSettings: z.array(eSignDocSetting).optional(), signatureType: eSignSignatureType.optional(), signingConsentText: z.string().max(1000).optional()}); export const applicantIdDocSetMode = z.string(); export const nfcVerificationMode = z.enum(["disabled", "optional", "required"]); export const nfcVerificationSettings = z.object({mode: nfcVerificationMode.optional()}); export const requiredPhotosAmount = z.string(); export const applicantPaymentMethodSettings = z.object({customFields: z.array(applicantIdDocSetCustomField).optional(), definitionsSubTypes: z.array(z.string()).optional(), fields: z.array(applicantIdDocSetField).optional(), requiredPhotos: z.boolean().optional(), requiredPhotosAmount: requiredPhotosAmount.optional(), subTypes: z.array(z.string()).optional(), type: z.string().optional()}); export const paymentSourceBankAccountLevelSettings = z.object({allowBankStatementUpload: z.boolean().optional(), allowExternalSourcesCheck: z.boolean().optional(), allowUserToProvideNameForVopCheck: z.boolean().optional(), allowed: z.boolean().optional(), performVopCheck: z.boolean().optional()}); export const paymentSourceBankCardImagesCount = z.string(); export const paymentSourceBankCardLevelSettings = z.object({allowed: z.boolean().optional(), countImages: paymentSourceBankCardImagesCount.optional(), extractIban: z.boolean().optional(), extractNationalBankAccountNumbers: z.boolean().optional(), performVopCheck: z.boolean().optional(), requireBankAccountNumber: z.boolean().optional()}); export const paymentSourceUnhostedWalletFormType = z.string(); export const paymentSourceCryptoWalletLevelSettings = z.object({allowed: z.boolean().optional(), cryptoSignatureAllowed: z.boolean().optional(), primaryVerificationMethod: paymentSourceUnhostedWalletCheckType.optional(), satoshiTestAllowed: z.boolean().optional(), unhostedWalletFormType: paymentSourceUnhostedWalletFormType.optional()}); export const paymentSourceEWalletLevelSettings = z.object({allowed: z.boolean().optional()}); export const paymentSourceTypeLevelSettings = z.object({bankAccount: paymentSourceBankAccountLevelSettings.optional(), bankCard: paymentSourceBankCardLevelSettings.optional(), cryptoWallet: paymentSourceCryptoWalletLevelSettings.optional(), eWallet: paymentSourceEWalletLevelSettings.optional()}); export const walletScreeningProvider = z.enum(["crystal", "merkle", "trmLabs", "chainalysis", "elliptic", "cyvers", "nominis", "cipherOwl"]); export const paymentSourceLevelSettings = z.object({allowScreenshots: z.boolean().optional(), riskScorePaymentSourceType: paymentSourceType.optional(), skipOwnershipCheck: z.boolean().optional(), skipRiskScoreCheck: z.boolean().optional(), typeSettings: paymentSourceTypeLevelSettings.optional(), unhostedWalletFormType: paymentSourceUnhostedWalletFormType.optional(), walletScreeningProvider: walletScreeningProvider.optional()}); export const phoneVerificationSettings = z.object({immutablePhoneIfPresent: z.boolean().optional()}); export const questionnaireProcessingSettings = z.object({skipIfFilled: z.boolean().optional()}); export const selfieProcessingSettings = z.object({skipFaceMatchCheck: z.boolean().optional(), skipLivenessCheck: z.boolean().optional()}); export const applicantIdDocSetStep = z.object({applicantLevelName: z.string().optional(), captureMode: z.string().optional(), customFields: z.array(applicantIdDocSetCustomField).optional(), fields: z.array(applicantIdDocSetField).optional(), idDocSubTypes: z.array(idDocSubType).optional(), idDocTypes: z.array(idDocType).optional(), minDocsCnt: z.number().int().optional(), name: z.string().optional()}); export const applicantIdDocSetUploaderMode = z.enum(["always", "never", "fallback"]); export const videoRequired = z.enum(["disabled", "enabled", "photoRequired", "passiveLiveness", "docapture"]); export const applicantIdDocSet = z.object({applicantDataSettings: applicantDataSettings.optional(), captureMode: applicantIdDocSetCaptureMode.optional(), checkSourceConfig: checkSourceConfig.optional(), checkSourceSettings: checkSourceLevelSettings.optional(), companyAddressGroupDefinitions: z.array(companyAddressGroupDefinition).optional(), companyBeneficiaryDefinitions: z.array(companyBeneficiaryGroupDefinition).optional(), companyDocsGroupDefinitions: z.array(companyDocsGroupDefinition).optional(), customFields: z.array(applicantIdDocSetCustomField).optional(), emailVerificationSettings: emailVerificationSettings.optional(), esignSettings: eSignSettings.optional(), fields: z.array(applicantIdDocSetField).optional(), idDocSetType: idDocSetType.optional(), mode: applicantIdDocSetMode.optional(), nfcVerificationSettings: nfcVerificationSettings.optional(), paymentMethods: z.array(applicantPaymentMethodSettings).optional(), paymentSourceSettings: paymentSourceLevelSettings.optional(), phoneVerificationSettings: phoneVerificationSettings.optional(), poaStepSettingsId: z.string().optional(), questionnaireDefId: z.string().optional(), questionnaireProcessingSettings: questionnaireProcessingSettings.optional(), restrictCountries: z.boolean().optional(), selfieProcessingSettings: selfieProcessingSettings.optional(), skipAllowed: z.boolean().optional(), steps: z.array(applicantIdDocSetStep).optional(), subTypes: z.array(idDocSubType).optional(), types: z.array(idDocType).optional(), uploaderMode: applicantIdDocSetUploaderMode.optional(), videoRequired: videoRequired.optional()}); export const applicantDocumentsKybSettings = z.object({disableCompanySearchAndPrefill: z.boolean().optional(), enableBeneficiariesAutoCheck: z.boolean().optional(), primaryContactLevelName: z.string().optional(), primaryContactRequired: z.boolean().optional(), shareholderThreshold: z.number().optional(), uboThreshold: z.number().optional()}); export const realTimeIdentificationRecordingSettings = z.object({recordingReviewMode: realTimeIdentificationRecordingReviewMode.optional()}); export const applicantDocumentsVideoIdentSettings = z.object({extendPreuploadCandidateDocs: z.array(idDocSetType).optional(), resetAllStepsOnEachAttempt: z.boolean().optional()}); export const applicantDocuments = z.object({country: z.string().optional(), docSets: z.array(applicantIdDocSet).optional(), excludedCountries: z.array(z.string()).optional(), includedCountries: z.array(z.string()).optional(), kybSettings: applicantDocumentsKybSettings.optional(), realTimeIdentificationRecording: z.boolean().optional(), realTimeIdentificationRecordingSettings: realTimeIdentificationRecordingSettings.optional(), stepsOutsideVideoId: z.array(z.string()).optional(), videoIdent: z.boolean().optional(), videoIdentSettings: applicantDocumentsVideoIdentSettings.optional(), videoIdentUploadTypes: z.array(z.string()).optional()}); export const reviewMode = z.string(); export const inspectionReview = z.object({attemptCnt: z.number().int().optional(), attemptId: z.string().optional(), confirmed: z.boolean().optional(), createDate: z.string().optional(), elapsedSincePendingMs: z.number().int().optional(), elapsedSinceQueuedMs: z.number().int().optional(), expireDate: z.string().optional(), lastResetDate: z.string().optional(), levelName: z.string().optional(), officerName: z.string().optional(), priority: z.number().int().optional(), reprocessing: z.boolean().optional(), reuseAttemptId: z.string().optional(), reviewDate: z.string().optional(), reviewId: z.string().optional(), reviewMode: reviewMode.optional(), reviewReasonCode: z.string().optional(), reviewResult: reviewResult.optional(), reviewStatus: reviewStatus.optional(), startDate: z.string().optional()}); export const applicantActionType = z.enum(["cryptoTransaction", "selfieAuth", "faceEnrollment", "paymentMethod"]); export const applicantActionPublicDto = z.object({agreement: applicantAgreement.optional(), applicantId: z.string().optional(), checks: z.array(backgroundCheck).optional(), clientId: z.string().optional(), createdAt: z.string().optional(), externalActionId: z.string().optional(), id: z.string().optional(), images: z.array(inspectionImageResult).optional(), paymentSource: paymentSource.optional(), requiredIdDocs: applicantDocuments.optional(), review: inspectionReview.optional(), type: applicantActionType.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * POST /resources/api/applicantActions/{actionId}/unhostedWallet/manualVerify */ export const createApiResourcesApiApplicantActionsActionIdUnhostedWalletManualVerify = async (args: CreateApiResourcesApiApplicantActionsActionIdUnhostedWalletManualVerifyArgs, options: CreateApiResourcesApiApplicantActionsActionIdUnhostedWalletManualVerifyOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json;charset=UTF-8") const url = `${baseUrl.replace(/\/+$/, '')}/resources/api/applicantActions/${encodeURIComponent(String(args.actionId))}/unhostedWallet/manualVerify${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(applicantActionPublicDto, await res.json()) };