{"version":3,"sources":["MortgageDashboard/mortgageDashboardUtils.ts","OTPAuthorization/state.ts","MortgageDashboard/Registers/CBResults/api.ts","MortgageDashboard/useFormatReworkData.ts","OTPAuthorization/OTPAuthorization.tsx","MortgageDashboard/Registers/CBResults/LiabilitySection.tsx","MortgageDashboard/domain.ts","OTPAuthorization/getGenerateOTP.ts","MortgageDashboard/Registers/CBResults/EditSection.tsx","MortgageDashboard/Registers/CBResults/utils.ts","MortgageDashboard/Registers/CBResults/OverdraftForm.tsx","MortgageDashboard/api.ts","MortgageDashboard/Registers/CBResults/Liabilities.tsx","MortgageDashboard/useFormatCreditType.ts","MortgageDashboard/Registers/CBResults/MortgageConsumerLoanStack.tsx","MortgageDashboard/Registers/CBResults/EditSection.treat.ts","MortgageDashboard/Registers/CBResults/OverdraftStack.tsx","MortgageDashboard/Registers/CBResults/Liabilities.treat.ts","OTPAuthorization/OTPAuthorizationParent.tsx"],"names":["isApplicant","a","type","selectedMainApplicant","index","unsafeNonNegativeInteger","isMainApplicant","selectedCoApplicant","getSelectedApplicant","selectedGeneral","checkIfCoapplicantCBCalled","registerStatus","length","data","registers","liabilitiesAmountLimits","min","max","foldApplicationPhase","pattern","applicationPhase","foldChecks","match","checks","whenDip","whenPostDip","callCB","option","exists","controlCheck","isDIPPhase","phase","isReworkPhase","isNotUndefined","flow","fromNullable","isSome","InitialState","t","InsertingOtpState","transactionId","optionFromUndefined","LocalizedString","remainingOtpRequests","NonNegativeInteger","pending","GenerateOtpErrorState","error","otpAPI","GenericError","RegenerateOtpErrorState","VerifyOtpErrorState","NoMoreAttemptsState","State","foldState","f","state","whenInitial","whenInsertingOtp","whenVerifyOtpError","whenGenerateOtpError","whenRegenerateOtpError","whenNoMoreAttempts","SetGenerateOtpErrorAction","SetVerifyOtpErrorAction","HandleReceiveOTPAction","HandleLastAttemptFailedAction","SetOtpPendingAction","Action","reducerConfig","sharedReducerConfig","action","DeleteLiabilityRecordInput","withApplicantIndex","recordId","NonEmptyString","deleteLiabilityRecord","apiCall","path","inputCodec","inputEq","eq","fromEquals","constFalse","CancelWithoutSavingInput","cancelWithoutSaving","saveAndUpdate","AddConsumerLoanOrMortgageInput","ConsumerLoanOrMortgageAdd","addConsumerLoanOrMortgage","outputCodec","ConsumerLoanOrMortgage","ConsumerLoanOrMortgageEdit","props","EditConsumerLoanOrMortgageInput","editConsumerLoanOrMortgage","AddOverdraftInput","OverdraftAdd","addOverdraft","Overdraft","OverdraftEdit","EditOverdraftInput","editOverdraft","AddCreditCardInput","CreditCardAdd","addCreditCard","CreditCard","CreditCardEdit","EditCreditCardInput","editCreditCard","GetProvidersOutput","loanProviderList","Provider","getProviders","start","constTrue","ExistingApplicationEdit","provider","monthlyInstallment","MoneyAmount","overdraftLimit","creditCardLimit","loanAmount","dateOfApplication","MonthYear","status","EditExistingApplicationInput","editExistingApplication","saveExistingApplicationsInput","applicantIndex","eqSaveExistingApplicationsInput","getStructEq","eqString","saveExistingApplications","useFormatReworkData","reworkData","formatMessage","useFormatMessage","formatFeedback","fieldName","pipe","chain","map","message","toUndefined","formatIssues","existingIssues","alt","fieldIssues","warnings","OTPAuthorizationInternal","dispatch","isMobileLayout","useIsMobileLayout","showSnackbar","useSnackBar","validOTP","useValidators","portalBlocked","usePortalStatusContext","errorToIssue","content","id","remainingAttempts","attemptsLeft","title","none","actions","useEffect","undefined","afterLoginState","processStarted","generateOTP","getGenerateOTP","onStart","onEnd","onError","onSuccess","handleSubmit","fieldProps","handleReset","useForm","initialValues","pin","fieldValidators","constant","onSubmit","otp","taskEither","bracket","rightIO","onVerifyOTP","orElse","leftIO","onFailure","smsAuthProps","otpTitleLabel","phoneNumber","label","value","sendOtp","onProcessStart","otpRequestButtonLabel","insertOtpTitle","insertOtpSubtitle","requestNotice","submitLabel","otpSubmitButtonLabel","constVoid","pinInput","otpLength","noCodeLabel","resendOtp","fromIO","fromPredicate","allowResendOTP","smsAuthorization","issue","disabled","s","some","variant","OTPAuthorization","useParentSharedReducer","OTPAuthorizationChild","useChildSharedReducer","fold","LiabilitySection","column","grow","shrink","units","children","boolean","size","weight","items","child","addNew","constNull","icon","PlusIcon","ApplicantIndex","codec","name","mapOutput","String","eqWithApplicantIndex","codecEq","applicantIndexA","applicantIndexB","b","equals","eqNumber","ApplicantsRecordC","defaultValue","applicantsRecord","nonEmptyArrayCodec","is","unknown","context","validate","either","values","record","isEmpty","0","toArray","nonEmptyArray","fromArray","traverse","getValidation","semigroup","getFirstSemigroup","decode","Number","getOrElse","reduce","encode","ApplicantData","documentType","DocumentType","personalData","PersonalData","documentDetails","PersonalDocument","permanentAddress","AddressOCR","currentAddress","contactAddress","SoniaStatus","updated","withFallback","updateDate","DateFromSQLString","ApplicantProfile","surname","phoneChecked","email","emailChecked","idChecked","customerData","soniaStatus","existingClient","ApplicantRegistersDataIncompleteProfile","completedClientProfile","ApplicantRegistersDataCompleteProfile","ApplicantRegistersData","CreditBureauStatus","PENDING","SUCCESS","REJECTED","StatusColor","White","Gray","Red","Yellow","Green","CreditType","MORTGAGE_LOAN","CONSUMER_LOAN","LoanPurpose","PURPOSE","NOT_PURPOSE","OriginalLoanPurpose","PURCHASE","RECONSTRUCTION","CONSTRUCTION","REVERSE_REPAYMENT","REPAYMENT_OF_PREVIOUSLY_GRANTED_LOAN","REPAYMENT_OF_PREVIOUSLY_GRANTED_NON_PURPOSE_LOAN","RefinanceLoansForLivingSelection","REFINANCE_WITH_LOANS_FOR_LIVING_TRUE","REFINANCE_WITH_LOANS_FOR_LIVING_FALSE","REFINANCE_WITH_ANY_LOANS_FOR_LIVING","creditType","currentBalance","finalDate","loanPurpose","approvedCreditAmount","canBeRefinanced","sharedCreditCoApplicantName","loansForLiving","repaidBeforeDisbursement","propertyOwner","contractNumber","originalLoanPurpose","displayOriginalLoanPurpose","displayLoansForLiving","loansForLivingDefaultValue","refinanceLoansForLivingSelection","usedForRefinance","manuallyAdded","originalLoanAmount","endDate","changeLimit","newOverdraftLimit","includedInBonita","newCreditCardLimit","code","BranchesList","BankersList","ApplicationAccessMode","VIEW_MODE","EDIT_MODE","UNAUTHORIZED","UserType","BANKER","BROKER","AssignedUser","bankerId","branchCode","firstName","lastName","branchName","branchAddress","brokerageCompany","editable","canBeHandedOverTo","handedOverTo","AssignedBrokerForBankerInfo","AssignedBrokerForBanker","brokerInfo","LoanList","consumerLoansOrMortgagesList","overdraftsList","creditCardsList","ExistingApplication","sharedCredit","ExistingApplicationStatus","Mortgage","ConsumerLoan","Terminated","WillBeSigned","ApplicationList","consumerLoansList","mortgagesList","Residence","Prague","OutsideOfPrague","OutsideOfCzechRepublic","HouseholdInfo","currentResidence","currentResidenceLabel","numberOfAdults","numberOfChildren","LivingExpenses","minimumMonthlyExpenses","otherRegularExpenses","alimony","validByCourt","alimonyFromCourt","numberOfChildrenForAlimony","numberOfAdultsForAlimony","TotalLiabilities","creditCardsLimits","monthlyInstallments","overdraftsLimit","totalLiabilities","TotalLiabilitiesInput","Expenses","householdInfo","livingExpenses","sameHouseholdAsApplicant","EducationCZ","Elementary","Apprenticed","ApprenticedWithLeavingExam","SecondaryWithLeavingExam","College","University","EducationSK","ElementarySchool","SecondaryWithoutLeavingExam","UniversityAbroad","UniversityInSlovakRepublik","Education","HousingTypeCZ","Own","Rental","Parents","Cooperative","Other","HousingTypeSK","OwnFlat","OwnHouse","ProvidedByEmployer","RentFromHousingAssociation","RentFromIndividual","RentFromState","HousingType","PersonalInformation","maritalStatus","MaritalStatus","maritalStatusLabel","commonProperty","commonPropertyLessThan6M","education","educationLabel","divorcedMoreThan3Y","CurrentAddress","housingType","housingTypeLabel","currentAddressSince","AdditionalDetails","personalInformation","CPIAnswers","ageBetweenLimits","incapacityToWork","cancer","invalidity","selfEmployed","disability","medicalSupervision","noticePeriod","probation","stateEmployment","situationListedAbove","ztpCard","employed","CPIEligibilityStatus","ELIGIBLE","PARTIAL_ELIGIBLE","NOT_ELIGIBLE","CPIData","cpiAnswers","cpiEligibility","ApplicantDetailsConfig","hasMaritalStatus","hasBirthDate","hasEmploymentInfo","hasProbationInfo","hasCompletedCPI","hasCompletedPreScoring","hasMainIncomeTypeEmployed","sameHousehold","BonitaResults","debtRatio","PercentageLikeFromNumber","maxLoanAmount","maxMonthlyInstallment","stressDebtRatio","totalActualExpenses","debtServiceToIncomeRatio","debtToIncomeRatio","dtiOverLimit","dstiOverLimit","simplifiedVersion","eligibleIncome","BonitaError","NOT_UPDATED","TECHNICAL_ERROR","PropertyAndAppraisalDetails","propertyType","SubPropertyType","address","actualValue","futureValue","PropertyAndAppraisalDetailsResponse","listOfPropertyAndAppraisalDetails","optionFromArray","sectionAutomaticallyValidated","OfferError","EXPIRED","DATE_OF_BIRTH_UPDATED","INELIGIBLE_CPI_PACKAGE","CPI_RESULT_ERROR","NO_CPI_PACKAGE_AVAILABLE","HQ_ONLY_APPLICANT_INELIGIBLE","HQ_BOTH_APPLICANTS_INELIGIBLE","HQ_CHANGE_INSURED_CLIENT","INTEREST_RATE_CHANGED","OfferWarning","OFFER_TOO_HIGH","MAIN_APPLICANT_INVALID_MAX_TENOR","CO_APPLICANT_INVALID_MAX_TENOR","LTV_OVER_LIMIT","BonitaApplicantState","hasCBLiabilities","hasIncomeDetails","hasExpensesDetails","hasPreApprovedIncome","optionFromNullable","isMarried","ApplicationStatus","APPROVED","HARD_KO","MANUAL","TIMEOUT","ErrorProfileType","CLIENT_UNDERAGE","CLIENT_OVERAGE","ClientProfileError","ApplicationIsLockedError","InvalidClientIDError","CardRecalledError","BonitaStatusIncompleteError","MTGSubmitApplicationError","MTG3POtpVerifyError","OtpVerifyError","ApplicationLimitError","ApplicationInvalidPhaseError","PreliminaryDecisionStatus","OK","INDIVIDUAL_ASSESSMENT","NOT_OK_CAN_ESCALATE","NOT_OK_CANNOT_ESCALATE","AUTOMATIC_DECISION_NOT_AVAILABLE","ERROR","FinalDecisionStatus","DECLINE_CAN_ESCALATE","DECLINE_CANNOT_ESCALATE","REWORK","CONTRACT_INITIATED","SectionName","Offer","Registers","Overview","ReworkAction","comment","reworkCategory","ReworkSection","Bonita","ClientProfile","Documents","PropertyAndAppraisal","PurposeAndFinancing","ReworkActions","reworkActions","reworkSections","ReworkCurrentAddress","optional","ReworkPersonalInformation","martialStatus","ReworkAdditionalDetailsData","ReworkAdditionalDetails","additionalDetails","ReworkHouseholdInfo","ReworkLivingExpenses","alimonyExpenses","ReworkTotalLiabilities","ReworkExpenses","ReworkCompanyInfo","applicantsShareHigherThan33","businessSector","businessStartingDate","companyIco","companyName","addIco","nameOfEntrepreneur","entrepreneurIco","country","street","phone","equityPositive","freelancerType","nameOf3P","stakeInCompany","ReworkContractInfo","contractIndefinitePeriod","contractPeriodExpiration","employedInSpecificProfessions","employmentType","inProbation","jobPosition","lengthOfUninterruptedCurrentEmployment","lengthOfUninterruptedOverallEmployment","paymentMethod","paymentMethodLabel","startingDate","workBasedOnAgreementOnWorkingActivity","ReworkIncomeInfo","alimonyChildrenInvolved","allowanceType","amortizationOfRentedRe","annualGrossIncome","bruttoComissions","businessGrossIncome","employedInCompany","equityFromLastYear","grossIncomes","incomeAsDeductibleExpenses","incomeDescription","incomeFromRentContract","incomeSource","incomeSourceLabel","isAlimonyIdentifiable","isAlimonyOutsideCountry","isApplicantDeclareAsUserInDeclaration","isCooperativeOwnership","keepsAccountancy","last3YearsPaidSharedProfit","lastPeriodProfit","monthlyAlimonyIncome","monthlyIncome","monthlyPension","monthlyRent","monthlySocialBenefit","negativeBusinessProfit","pensionType","profitSharingIncome","r101BruttoIncomes","r201IncomeFromLease","r37PartialTaxBase","r38PartialTaxBase","r39PartialTaxBase","r74TaxAfterClaimedRelief","reCoOwned","reInPersonalOwnership","reUsedAsCollateral","retirementRentType","salaryCurrency","specialTypeOfIncome","tax","taxBase","typeOfRent","youngPeopleConditions","taxAdvisor","calculationBasedOnTurnover","profitLastPeriodPositive","ReworkAdditionalIncomes","companyInfo","contractInfo","incomeInfo","ReworkIncomes","additionalIncomes","totalAvgMonthlyIncome","ReworkBonita","expenses","incomes","ReworkDocumentDetails","authority","authorityCountry","dateOfIssuing","idNumber","issuer","validUntil","ReworkAddress","city","CountryCode","streetName","streetNumber","zipCode","provinceName","ReworkPersonalData","birthNumber","citizenship","countryOfBirth","dateOfBirth","nationality","placeOfBirth","sex","Sex","titleAfter","titleBefore","ReworkCustomer","ReworkClientProfileData","customer","ReworkClientProfile","clientProfile","ReworkLoanType","Combined","NonPurpose","Purpose","ReworkOfferResult","apr","fixationPeriod","insuranceFee","interestRate","selectedOffer","ReworkOfferSummary","duration","loanToValue","TenorType","Years","Months","Tenor","tenorValue","tenorType","ReworkOffer","appraisalFee","collateralType","dateOfBirthCoApplicant","dayOfInstallment","estimatedPropertyValue","loanType","nonPurposeAmount","nonSpecifiedProperty","totalFeesDiscount","greenMortgage","offerResult","offerSummary","processingFee","purposeAmount","selectedInsurance","selectedInsuredClient","tenor","ReworkApartmentInformation","isOutOfRange","isRecreationOrHighRisk","isTechnicalConditionUnmaintained","moreThanFiveRooms","ReworkAppraisalDetails","addressOfProperty","dateOfEvaluation","DateFromISOString","valueOfProperty","ReworkOtherInformation","commentsForAppraiser","districtOfProperty","isDifferentContact","nameOfContact","ReworkAppraisalQuestions","apartmentInformation","appraisalDetails","constructionType","ConstructionType","developerProject","externalAppraisal","floodZoneIV","legalConstraint","moreThan10Apartments","noLegalAccessToTheProperty","originalAppraisal","otherInformation","otherRestrictions","pledgeForAnotherInstitution","ReworkAppraisal","appraisalQuestions","appraisalType","AppraisalType","ReworkRisk","additionalNote","checked","riskId","riskText","RuntimeLocaleKey","ReworkPropertyRisk","hasRisks","riskList","ReworkPropertyAddress","numberOfApartment","numberOfDescriptiveOrParcel","postCode","ReworkSubProperty","purpose","PurposeOfUse","subPropertyId","ReworkPropertyAndAppraisalItem","propertyInsuranceFee","appraisal","isPledged","propertyId","propertyRisk","subProperties","ReworkPropertyAndAppraisal","propertyAndAppraisalList","Disbursement","DepositAccountWithARealEstateAgency","DirectlyAccordingToThePurpose","EscrowAccount","LawyerCustody","None","NotApplicable","NotaryCustody","WithoutCustody","ReworkRegisteredPledge","AlreadyRegisteredPledge","ProposalForRegistrationOfPledge","IsOwnershipFromHousingType","No","Yes","ReworkOwnerClientEnum","PurposeOfOriginalInvestment","ConstructionOrReconstruction","Purchase","TypeOfAcquiringOfRentalRights","AnotherCooperativeShareBuy","ObtainingTheRightToLease","TypeOfSettlement","SettlementOfCoOwnershipClaims","SettlementOfInheritanceClaimsOnTheProperty","SettlementOfPropertyClaims","ReworkAdditionalInfo","disbursement","disbursementBasedOnRegisteredPledge","isOwnershipFromHousingType","previousClientsAreCurrentBorrowers","purposeOfOriginalInvestment","stateOfRegisteredPledge","typeOfAcquiringOfRentalRights","typeOfSettlement","ReworkFinancing","amountOfLoan","amountOfNonOwnFunds","amountOfOwnFunds","ReworkLoanPurpose","NON_PURPOSE","PAYMENT_OF_COOPERATIVE_SHARE","PURCHASE_FROM_DEVELOPER_PROJECT","REFINANCING_OF_LOANS","REIMBURSEMENT_OF_OWN_FUNDS","SETTLEMENT_OF_CO_OWNERSHIP","ReworkPurpose","additionalInfo","financedProperty","financing","loanPurposeLabel","purposeId","ReworkPurposeAndFinancing","purposes","ReworkCreditCard","ReworkExistingApplication","ReworkConsumerLoanOrMortgage","isUsedForRefinance","ReworkOverdraft","ReworkCreditBureauResult","creditCards","existingApplications","existingLoans","overdrafts","ReworkRegisters","creditBureauResults","ReworkData","reworkAdditionalDetails","reworkBonita","reworkClientProfile","reworkOffer","reworkPropertyAndAppraisal","reworkPurposeAndFinancing","reworkRegisters","onGenerateOTP","chainW","remainingRequests","EditSection","className","classes","heading","toFalse","booleanOption","resolveAmount","moneyAmount","amount","checkRequiredFieldsProvided","requiredFields","Object","entries","filter","field","hasOwnProperty","_","result","formStateFromInitialValues","getChangeLimitDisbursementConflict","getDisplayedFields","formSetup","foldLiabilitiesVariant","onMtg","onCf","onOvd","tenant","edit","getRequiredFields","isACPhase","OverdraftForm","apiParameters","config","r8EnableSimpleRefinancing","useAppContext","defined","definedNoExtract","nonNegativeNumber","amountMinMax","maxLength","amountMinMaxWithNegative","currency","useTenantCurrency","useCommand","api","addOverdraftStandardLoan","standardLoanApi","addOverdraftOverdraft","ovdApi","editOverdraftStandardLoan","editOverdraftOverdraft","formatOverdraftIssues","formatOverdraftFeedback","reworkOverdraft","overDraftLimit","onEdit","setValues","validators","inSequence","amountLimits","ccAndOvdCurrentBalance","ccAndOvdLimit","validator","right","validateIfDefined","selectedApplicant","of","newValues","overdraft","onSave","previousEdit","usePrevious","providerFieldProps","displayedFields","placeholder","issues","feedback","onChange","newValue","description","clearable","searchable","options","providersList","foldTenant","selectedDropdownOption","dropdownOptionToValue","i","onDismiss","hAlignContent","onCancel","labels","normal","loading","success","vAlignContent","fluid","isViewMode","isInteractingWithAnyForm","onRemove","NewApplicationInput","eqNewApplicationInput","NewApplicationOutput","applicationId","createNewApplication","createNewExistingClient","AddCoapplicantInput","coapplicantLabel","addCoapplicant","PositiveInteger","renounce","removeApplication","RemoveCoapplicantInput","coapplicantIndex","removeCoapplicant","CancelIdUploadInput","cancelIdUpload","JobPositionsOutput","JobPosition","jobPositions","FreelancerTypesOutput","FreelancerType","FreelancerTypes","CurrenciesOutput","currencies","ThirdPartiesOutput","ThirdParty","thirdParties","DataForClientWithoutIcoOutput","houseNumber","dataForClientWithoutIco","CheckStatus","ToDo","InProgress","Complete","Warning","Error","InvalidError","Timeout","semigroupCheckStatus","concat","BusinessSectorsOutput","BusinessSector","businessSectors","BonitaStatus","ClientIdCheckStatus","ClientProfilePermissions","canEditEmail","basicApplicationChecks","contacts","clientId","errors","permissions","offer","errorType","warningType","showSimpleRefinancing","bonita","simplifiedBonita","refinancingLoan","mandatoryFields","isNotSentToLf","cpiQuestions","legalData","healthQuestionnaire","isApplicationLocked","canSubmitApplication","reworkCategoryQuestion","DipApplicationChecks","PostDipApplicationChecks","AC","PD","FD","CHANGE_PROCESS","purposeStatus","propertyAndAppraisal","property","documents","ApplicationChecksOutput","applicationChecks","saveApplication","submitApplication","errorCodec","ApplicationStatusOutput","responseStatus","applicationStatus","overLimitDecisionReasons","proceedWithAcDashboard","ClientProfileOutput","openClient","ProceedWithRegistersOutput","completedOffer","mainApplicantInitiatedCB","applicantsRegistersData","selectedOfferLoanAmount","proceedWithRegisters","RegistersMemorandumInput","firstOptionCBConsent","secondOptionCBConsent","eqRegistersMemorandumInput","eqBoolean","registersMemorandum","RegistersOtpGenerationInput","withCoApplicant","OtpGenerationInput","eqRegistersOtpGenerationInput","eqWithCoApplicant","eqOtpGenerationInput","RegistersOtpGenerationError","OtpGenerationError","registersOtpGeneration","OtpGenerationOutput","RegistersOtpVerifyInput","OtpVerifyInput","eqRegistersOtpVerifyInput","eqOtpVerifyInput","registersOtpVerify","RegisterStatus","RegisterStatusOutput","AmountLimit","baseCreditBureauResult","internalInfoStatus","loanList","mtgAndClApprovedLoanAmountLimit","mtgAndClCurrentBalanceLimit","mtgAndClMonthlyInstallmentLimit","ccAndOvdCurrentBalanceLimit","applicationList","CreditBureauResultsSK","srbiStatus","nrkiStatus","otherStatus","socialInsurance","CreditBureauResultsCZ","crifStatus","solusStatus","insolvencyRegisterStatus","CreditBureauResults","CreditBureauResultsOutPut","ProceedWithBonitaOutput","hasSelectedOffer","DIP","bonitaData","proceedWithBonita","GetBonitaOutput","bonitaEvaluate","income","GetIncome","getBonita","saveBonitaIncome","SaveIncome","editMainIncome","IncomeFull","addAdditionalIncome","editAdditionalIncome","AdditionalIncome","deleteAdditionalIncome","DeleteAdditionalIncome","saveBonitaExpenses","getTotalLiabilities","MinimumMonthlyExpenses","evaluateBonita","OutputBonitaResults","bonitaResults","viewPropertyAndAppraisalDetails","SaveAdditionalDetailsInput","saveAdditionalDetails","GetAdditionalDetailsOutput","getAdditionalDetails","SubmitLegalDataInput","answers","KYCAnswers","submitLegalData","GetLegalDataOutput","getLegalData","GetLegalDataOutput2","KYCAnswers2","getLegalData2","ProceedWithLegalDataOutput","hasLegalDataCompleted","legalDataRequired","computeBonitaBefore","secondCitizenshipRequired","proceedWithLegalData","SaveCPIAnswersInput","saveCPIAnswers","GetCPIDataOutput","insuredApplicantIndex","cpiData","getCPIData","ProceedWithApplicantDetailsOutput","hasCPI","showCPI","proceedWithApplicantDetailsData","proceedWithApplicantDetails","HealthQuestionnaireState","COMPLETED","CPI_NOT_FILLED","FILLED","NOT_NEEDED","RESULT_RECEIVED","TODO","ProceedWithACApplicantDetailsResponse","hasCompletedClientProfile","hasCompletedLegalData","healthQuestionnaireState","isInsuredClient","ProceedWithACApplicantDetails","proceedWithACApplicantDetailsData","proceedWithACApplicantDetails","editEmail","checkExistingClientMortgage","CheckExistingClientInput","eqCheckExistingClientInput","CheckExistingClientOutput","NewMortgageCheckClientStatus","UNDERAGE_BRANCH","UNDERAGE_REMOTE","NOTES_CLIENT_COMPLETE","KYC_HIGH_RISK_BRANCH","KYC_HIGH_RISK_REMOTE","KYC_FOREIGN","UPDATE_CONTACTS_BRANCH","UPDATE_CONTACTS_REMOTE","VERIFY_CONTACTS_BRANCH","VERIFY_CONTACTS_REMOTE","ADD_PASS_BRANCH","ADD_PASS_REMOTE","MTG_UPDATE_ID","MTG_UPDATE_ID_CONTACTS","UPDATE_ID_CONTACTS_VERIFY_CONTACTS","UPDATE_ID_CONTACTS_VERIFY_CONTACTS_SET_UP_PASS_BRANCH","UPDATE_ID_CONTACTS_VERIFY_CONTACTS_SET_UP_PASS_REMOTE","UPDATE_ID_VERIFY_CONTACTS","UPDATE_ID_VERIFY_CONTACTS_SET_UP_PASS_BRANCH","UPDATE_ID_VERIFY_CONTACTS_SET_UP_PASS_REMOTE","UPDATE_ID_SET_UP_PASS_BRANCH","UPDATE_ID_SET_UP_PASS_REMOTE","CheckClientStatusOutput","checkClientStatus","ProceedWithPreliminaryDecision","initialDARDocId","gdprConsentId","cpiApplicationDocId","cpiMediationDocId","cpiNoHq","proceedWithPreliminaryDecision","ProceedWithPreliminaryDecisionStatus","ready","proceedWithPreliminaryDecisionStatus","proceedWithPreliminarySkipAuthorization","PreliminaryDecisionOtpGenerationInput","eqPreliminaryDecisionOtpGenerationInput","PreliminaryDecisionOtpGenerationError","preliminaryDecisionOtpGeneration","preliminaryDecisionCanAuthorizeOTP","ConsentRequestInput","accepted","setMarketingConsent","setNonDebtsOrBankruptDeclaration","PreliminaryDecisionOtpVerifyInput","eqPreliminaryDecisionOtpVerifyInput","preliminaryDecisionOtpVerify","SubmitForPreliminaryDecisionInput","submitForPreliminaryDecision","GetBranchesOutput","branches","getBranches","GetBankersInput","GetBankersOutput","bankers","eqGetBankersInput","getBankers","savePreferredBankerInput","eqSavePreferredBankerInput","savePreferredBanker","getAssignedUser","handOverApplicationInput","handOverTo","eqHandOverApplicationInput","handOverApplication","GetBrokersInput","partialEmail","eqGetBrokersInput","GetBrokersOutput","getBrokers","getAssignedBrokerForBanker","saveAssignedBrokerForBankerInput","eqSaveAssignedBrokerForBankerInput","saveAssignedBrokerForBankerOutput","saveAssignedBrokerForBanker","removeAssignedBrokerForBanker","PDReceivedStatus","PDNotReceivedStatus","PDStatus","PreliminaryDecisionStatusOutput","preliminaryDecisionStatus","EscalationSubmitInput","escalationSubmit","EscalationUploadEmailInput","fileName","fileContent","FileContent","escalationUploadEmail","SubmitForFinalDecision","submitFinalDecision","FinalDecisionStatusOutputSome","FinalDecisionStatusOutput","finalDecisionStatus","preliminaryDecisionValidate","PreliminaryDecisionValidateStatusOutput","IS_VALID","NOT_COMPLETED","NO_BANKER_ASSIGNED","preliminaryDecisionValidateStatus","initiateChangeProcess","termsAndConditions","TermsAndConditionsOutput","linkGenerationNow","eqLinkGenerationInput","LinkGenerationInput","LinkGenerationOutput","LinkGenerationError","generateIdentificationOtp","OtpGenerationInputBase","eqOtpGenerationInputBase","OTPGenerationOutputBase","OtpGenerationErrorBase","eqWithCoapplicantOtpVerifyInput","verifyIdentificationOtp","OtpVerifyInputBase","OtpVerifyErrorBase","getTotalCurrentBalances","tot","Liabilities","enableMtgImprovementsUi","setLoanList","useState","isAdding","setIsAdding","setAddingProcess","itemType","onEditEnd","onEditStart","hasEditedOnce","setHasEditedOnce","hasLiabilities","setHasLiabilities","isConsumerLoansOrMortgagesListAdded","isCreditCardsListAdded","isOverdraftsListAdded","formErrors","setFormErrors","editingRecordID","setEditingRecordID","setEditingProcess","isBonitaEvaluated","cancelWithoutSavingStandardLoan","deleteLiabilityRecordStandardLoan","cancelWithoutSavingOverdraft","deleteLiabilityRecordOverdraft","removeLoanRecord","c","updateChecks","otherApplicantsTotalLoanAmount","othersLoanList","array","compact","totalLoanAmount","useMemo","atLeastOneLiability","formButtons","submitButton","isNone","left","areLiabilitiesAdded","mapLeft","err","liabilitiesErrorsMap","cancelButton","getReworkConsumerLoan","reworkCBResults","findFirst","loan","renderMTGInfoBanner","renderCFInfoBanner","adding","onCheck","credit","prevState","onEditing","credits","onAdd","loans","onAdding","monthlyInstallmentAmount","mtgCurrentBalance","mtgOriginalLoanAmount","getReworkOverdraft","rId","creditCard","getReworkCreditCard","offerLoanAmount","useFormatCreditType","MortgageConsumerLoanStack","getLoans","creditTypes","item","includes","manuallyAddedConsumerLoansOrMortgages","mortgagesConsumerLoanFormat","reworkConsumerLoan","newMortgageConsumerLoanData","container","OverdraftStack","manuallyAddedOverdraftsList","partition","overdraftsFormat","newOverdraftData","margins","OTPAuthorizationParent","errorToBanner","errorBanner","warningBanner","displayResendCode","color","palette","neutral700","toNullable"],"mappings":"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","file":"static/js/index~dd4e686b.261b6835.chunk.js","sourcesContent":["import { NonNegativeInteger, PositiveInteger } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { flow, Lazy } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { CoApplicantInput, unsafeNonNegativeInteger } from \"../globalDomain\";\nimport {\n ApplicationChecksOutput,\n ApplicationPhase,\n DipApplicationChecks,\n PostDipApplicationChecks,\n RegisterStatusOutput,\n} from \"./api\";\nimport { ErrorProfileType } from \"./domain\";\nimport { ApplicantInfo } from \"./PreliminaryDecision/Sending\";\n\ntype MainApplicant = {\n type: \"MainApplicant\";\n index: NonNegativeInteger;\n};\n\ntype CoApplicant = {\n type: \"CoApplicant\";\n index: PositiveInteger;\n};\n\ntype GeneralApplicant = {\n type: \"General\";\n index: PositiveInteger;\n};\n\nexport type SelectedApplicant = MainApplicant | CoApplicant | GeneralApplicant;\n\nexport const isApplicant = (a: SelectedApplicant) =>\n a.type === \"MainApplicant\" || a.type === \"CoApplicant\";\n\nexport const selectedMainApplicant: SelectedApplicant = {\n type: \"MainApplicant\",\n index: unsafeNonNegativeInteger(0),\n};\n\nexport function isMainApplicant(a: SelectedApplicant): a is MainApplicant {\n return a.type === \"MainApplicant\";\n}\n\nexport const selectedCoApplicant = (\n index: PositiveInteger\n): SelectedApplicant => ({\n type: \"CoApplicant\",\n index,\n});\n\nexport const getSelectedApplicant = (\n index: NonNegativeInteger\n): SelectedApplicant =>\n index === 0\n ? selectedMainApplicant\n : {\n type: \"CoApplicant\",\n index: index as PositiveInteger,\n };\n\nexport const selectedGeneral = (index: PositiveInteger): SelectedApplicant => ({\n type: \"General\",\n index,\n});\n\nexport type KoUploadIdError =\n | \"SUSPECTED_FRAUD\"\n | \"MaxAttemptsReached\"\n | ErrorProfileType\n | boolean;\n\nexport type Section =\n | { id: \"overview\"; showApplicationStatus: boolean }\n | { id: \"clientProfile\"; selectedApplicant: SelectedApplicant }\n | { id: \"offer\" }\n | { id: \"bonita\"; selectedApplicant: SelectedApplicant }\n | {\n id: \"registers\";\n selectedApplicant: SelectedApplicant;\n fromBonita: boolean;\n }\n | { id: \"additionalDetails\"; selectedApplicant: SelectedApplicant }\n | { id: \"healthQuestionnaire\"; selectedApplicant: SelectedApplicant }\n | {\n id: \"kycQuestionnaire\";\n selectedApplicant: SelectedApplicant;\n secondCitizenshipRequired: boolean;\n }\n | ({\n id: \"phoneVerification\";\n initialPhoneNumber: Option;\n } & CoApplicantInput)\n | ({\n id: \"emailVerification\";\n initialEmail: Option;\n } & CoApplicantInput)\n | ({ id: \"uploadId\" } & CoApplicantInput)\n | {\n id: \"koUploadId\";\n type: KoUploadIdError;\n hasCoApplicant?: boolean;\n }\n | { id: \"purposeAndFinancing\" }\n | { id: \"propertyAndAppraisal\"; selectedApplicant: SelectedApplicant }\n | { id: \"documents\"; selectedApplicant: SelectedApplicant }\n | { id: \"communication\" }\n | {\n id: \"sendingPreliminaryDecision\";\n applicant: ApplicantInfo;\n coApplicant: Option;\n coApplicantIndex: Option;\n comment: Option;\n }\n | { id: \"decisionEscalation\" }\n | { id: \"maxNumberChangesReached\" };\n\nexport type OnChangeSection = (\n section: Section,\n refreshChecks?: boolean\n) => void;\n\nexport const checkIfCoapplicantCBCalled = (\n registerStatus: RegisterStatusOutput\n) => registerStatus.length > 1 && registerStatus[1].data.registers === \"ToDo\";\n\nexport const liabilitiesAmountLimits = {\n min: 0,\n max: 999_999_999,\n};\n\nexport function foldApplicationPhase(\n pattern: { [k in ApplicationPhase]: Lazy }\n): Reader {\n return applicationPhase => pattern[applicationPhase]();\n}\n\nexport function foldChecks(match: {\n whenDip: (checks: DipApplicationChecks) => A;\n whenPostDip: (tab: PostDipApplicationChecks) => A;\n}): Reader {\n return checks =>\n checks.applicationPhase === \"DIP\"\n ? match.whenDip(checks)\n : match.whenPostDip(checks);\n}\n\nexport const callCB = option.exists(\n ({ controlCheck }) => controlCheck\n);\n\nexport function isDIPPhase(phase: ApplicationPhase): boolean {\n return phase === \"DIP\";\n}\n\nexport function isReworkPhase(phase: ApplicationPhase): boolean {\n return phase === \"REWORK\";\n}\n\nexport const isNotUndefined = flow(option.fromNullable, option.isSome);\n","import { NonNegativeInteger, LocalizedString } from \"design-system\";\nimport { GenericError, optionFromUndefined } from \"../globalDomain\";\nimport * as otpAPI from \"../OTP/domain\";\nimport * as t from \"io-ts\";\nimport { sharedReducerConfig } from \"../BranchExperience/useSharedReducer\";\n\nconst InitialState = t.type({\n type: t.literal(\"initial\"),\n});\ntype InitialState = t.TypeOf;\n\nconst InsertingOtpState = t.type({\n type: t.literal(\"insertingOtp\"),\n transactionId: optionFromUndefined(LocalizedString),\n remainingOtpRequests: NonNegativeInteger,\n pending: t.boolean,\n});\nexport type InsertingOtpState = t.TypeOf;\n\nconst GenerateOtpErrorState = t.type({\n type: t.literal(\"generateOtpError\"),\n error: t.union([\n otpAPI.InvalidFlowIdError,\n otpAPI.OtpGenerationError,\n GenericError,\n ]),\n});\ntype GenerateOtpErrorState = t.TypeOf;\n\nconst RegenerateOtpErrorState = t.type({\n type: t.literal(\"regenerateOtpError\"),\n error: t.union([\n otpAPI.InvalidFlowIdError,\n otpAPI.OtpGenerationError,\n GenericError,\n ]),\n transactionId: optionFromUndefined(LocalizedString),\n remainingOtpRequests: NonNegativeInteger,\n pending: t.boolean,\n});\ntype RegenerateOtpErrorState = t.TypeOf;\n\nconst VerifyOtpErrorState = t.type({\n type: t.literal(\"verifyOtpError\"),\n error: t.union([\n otpAPI.InvalidFlowIdError,\n otpAPI.OTPExpiredError,\n otpAPI.InvalidOTPError,\n GenericError,\n ]),\n transactionId: optionFromUndefined(LocalizedString),\n remainingOtpRequests: NonNegativeInteger,\n pending: t.boolean,\n});\ntype VerifyOtpErrorState = t.TypeOf;\n\nconst NoMoreAttemptsState = t.type({\n type: t.literal(\"noMoreAttempts\"),\n transactionId: optionFromUndefined(LocalizedString),\n remainingOtpRequests: NonNegativeInteger,\n});\ntype NoMoreAttemptsState = t.TypeOf;\n\nexport const State = t.union([\n InitialState,\n InsertingOtpState,\n VerifyOtpErrorState,\n GenerateOtpErrorState,\n RegenerateOtpErrorState,\n NoMoreAttemptsState,\n]);\nexport type State = t.TypeOf;\n\nexport function foldState(f: {\n whenInitial: (state: InitialState) => A;\n whenInsertingOtp: (state: InsertingOtpState) => A;\n whenVerifyOtpError: (state: VerifyOtpErrorState) => A;\n whenGenerateOtpError: (state: GenerateOtpErrorState) => A;\n whenRegenerateOtpError: (state: RegenerateOtpErrorState) => A;\n whenNoMoreAttempts: (state: NoMoreAttemptsState) => A;\n}): (state: State) => A {\n return (state: State) => {\n switch (state.type) {\n case \"initial\":\n return f.whenInitial(state);\n case \"insertingOtp\":\n return f.whenInsertingOtp(state);\n case \"verifyOtpError\":\n return f.whenVerifyOtpError(state);\n case \"generateOtpError\":\n return f.whenGenerateOtpError(state);\n case \"regenerateOtpError\":\n return f.whenRegenerateOtpError(state);\n case \"noMoreAttempts\":\n return f.whenNoMoreAttempts(state);\n }\n };\n}\n\nconst SetGenerateOtpErrorAction = t.type({\n type: t.literal(\"SetGenerateOtpError\"),\n error: t.union([\n otpAPI.InvalidFlowIdError,\n otpAPI.OtpGenerationError,\n GenericError,\n ]),\n});\n\nconst SetVerifyOtpErrorAction = t.type({\n type: t.literal(\"SetVerifyOtpError\"),\n error: t.union([\n otpAPI.InvalidFlowIdError,\n otpAPI.OTPExpiredError,\n otpAPI.InvalidOTPError,\n GenericError,\n ]),\n});\n\nconst HandleReceiveOTPAction = t.type({\n type: t.literal(\"HandleReceiveOTP\"),\n transactionId: optionFromUndefined(LocalizedString),\n remainingOtpRequests: NonNegativeInteger,\n});\n\nconst HandleLastAttemptFailedAction = t.type({\n type: t.literal(\"HandleLastAttemptFailed\"),\n});\n\nconst SetOtpPendingAction = t.type({\n type: t.literal(\"SetOtpPending\"),\n pending: t.boolean,\n});\n\nconst Action = t.union([\n SetGenerateOtpErrorAction,\n SetVerifyOtpErrorAction,\n HandleLastAttemptFailedAction,\n HandleReceiveOTPAction,\n SetOtpPendingAction,\n]);\nexport type Action = t.TypeOf;\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case \"SetVerifyOtpError\":\n if (\n state.type === \"verifyOtpError\" ||\n state.type === \"insertingOtp\" ||\n state.type === \"regenerateOtpError\"\n ) {\n return {\n type: \"verifyOtpError\",\n error: action.error,\n transactionId: state.transactionId,\n remainingOtpRequests: state.remainingOtpRequests,\n pending: state.pending,\n };\n }\n return state;\n\n case \"SetGenerateOtpError\":\n if (state.type === \"initial\" || state.type === \"generateOtpError\") {\n return {\n type: \"generateOtpError\",\n error: action.error,\n };\n } else if (state.type !== \"noMoreAttempts\") {\n return {\n type: \"regenerateOtpError\",\n error: action.error,\n remainingOtpRequests: state.remainingOtpRequests,\n transactionId: state.transactionId,\n pending: state.pending,\n };\n }\n return state;\n\n case \"HandleLastAttemptFailed\":\n if (state.type !== \"initial\" && state.type !== \"generateOtpError\") {\n return {\n type: \"noMoreAttempts\",\n transactionId: state.transactionId,\n remainingOtpRequests: state.remainingOtpRequests,\n };\n }\n return state;\n\n case \"HandleReceiveOTP\":\n return {\n type: \"insertingOtp\",\n transactionId: action.transactionId,\n remainingOtpRequests: action.remainingOtpRequests,\n pending: false,\n };\n\n case \"SetOtpPending\":\n if (\n state.type !== \"initial\" &&\n state.type !== \"generateOtpError\" &&\n state.type !== \"noMoreAttempts\"\n ) {\n return {\n ...state,\n pending: action.pending,\n };\n }\n return state;\n }\n}\n\nexport const reducerConfig = sharedReducerConfig(\n \"OTPAuthorization\",\n State,\n Action,\n reducer\n);\n","import { apiCall } from \"../../../APICall\";\nimport * as t from \"io-ts\";\nimport {\n ConsumerLoanOrMortgage,\n ConsumerLoanOrMortgageAdd,\n withApplicantIndex,\n Overdraft,\n OverdraftAdd,\n CreditCard,\n CreditCardAdd,\n Provider,\n} from \"../../domain\";\nimport { eq } from \"fp-ts\";\nimport { constFalse, constTrue } from \"fp-ts/function\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport {\n MoneyAmount,\n MonthYear,\n optionFromUndefined,\n} from \"../../../globalDomain\";\n\nconst DeleteLiabilityRecordInput = withApplicantIndex(\n t.type({ recordId: NonEmptyString })\n);\n\nexport const deleteLiabilityRecord = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"delete\"],\n inputCodec: DeleteLiabilityRecordInput,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst CancelWithoutSavingInput = withApplicantIndex(t.type({}));\n\nexport const cancelWithoutSaving = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"cancelWithoutSaving\"],\n inputCodec: CancelWithoutSavingInput,\n inputEq: eq.fromEquals(constFalse),\n});\n\nexport const saveAndUpdate = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"saveAndUpdate\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst AddConsumerLoanOrMortgageInput = withApplicantIndex(\n ConsumerLoanOrMortgageAdd\n);\n\nexport const addConsumerLoanOrMortgage = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"addConsumerLoanOrMortgage\"],\n inputCodec: AddConsumerLoanOrMortgageInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ConsumerLoanOrMortgage,\n});\n\nconst ConsumerLoanOrMortgageEdit = t.type(\n {\n ...ConsumerLoanOrMortgageAdd.props,\n recordId: NonEmptyString,\n },\n \"ConsumerLoanOrMortgageEdit\"\n);\n\nconst EditConsumerLoanOrMortgageInput = withApplicantIndex(\n ConsumerLoanOrMortgageEdit\n);\n\nexport const editConsumerLoanOrMortgage = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"editConsumerLoanOrMortgage\"],\n inputCodec: EditConsumerLoanOrMortgageInput,\n outputCodec: ConsumerLoanOrMortgage,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst AddOverdraftInput = withApplicantIndex(OverdraftAdd);\n\nexport const addOverdraft = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"addOverdraft\"],\n inputCodec: AddOverdraftInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: Overdraft,\n});\n\nconst OverdraftEdit = t.type(\n {\n ...OverdraftAdd.props,\n recordId: NonEmptyString,\n },\n \"OverdraftEdit\"\n);\n\nconst EditOverdraftInput = withApplicantIndex(OverdraftEdit);\n\nexport const editOverdraft = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"editOverdraft\"],\n inputCodec: EditOverdraftInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: Overdraft,\n});\n\nconst AddCreditCardInput = withApplicantIndex(CreditCardAdd);\n\nexport const addCreditCard = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"addCreditCard\"],\n inputCodec: AddCreditCardInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CreditCard,\n});\n\nconst CreditCardEdit = t.type(\n {\n ...CreditCardAdd.props,\n recordId: NonEmptyString,\n },\n \"CreditCardEdit\"\n);\n\nconst EditCreditCardInput = withApplicantIndex(CreditCardEdit);\n\nexport const editCreditCard = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"editCreditCard\"],\n inputCodec: EditCreditCardInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CreditCard,\n});\n\nconst GetProvidersOutput = t.type({\n loanProviderList: t.array(Provider, \"Providers\"),\n});\n\nexport const getProviders = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"providers\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: GetProvidersOutput,\n});\n\nexport const start = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"start\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n});\n\nconst ExistingApplicationEdit = t.type(\n {\n recordId: NonEmptyString,\n provider: optionFromUndefined(NonEmptyString),\n monthlyInstallment: optionFromUndefined(MoneyAmount),\n overdraftLimit: optionFromUndefined(MoneyAmount),\n creditCardLimit: optionFromUndefined(MoneyAmount),\n loanAmount: optionFromUndefined(MoneyAmount),\n dateOfApplication: optionFromUndefined(MonthYear),\n status: t.boolean,\n },\n \"ExistingApplicationEdit\"\n);\n\nconst EditExistingApplicationInput = withApplicantIndex(\n ExistingApplicationEdit\n);\n\nexport const editExistingApplication = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"editExistingApplication\"],\n inputCodec: EditExistingApplicationInput,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst saveExistingApplicationsInput = t.type({\n applicantIndex: t.string,\n});\n\nconst eqSaveExistingApplicationsInput = eq.getStructEq({\n applicantIndex: eq.eqString,\n});\n\nexport const saveExistingApplications = apiCall({\n path: [\"packages\", \"mortgage\", \"liabilities\", \"saveExistingApplications\"],\n inputCodec: saveExistingApplicationsInput,\n inputEq: eqSaveExistingApplicationsInput,\n});\n","import {\n fieldIssues,\n InlineMessage,\n Issues,\n LocalizedString,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { ComponentProps } from \"react\";\nimport { useFormatMessage } from \"../intl\";\n\nexport type Feedback = ReturnType<\n ReturnType[\"formatFeedback\"]\n>;\n\nexport function useFormatReworkData>>(\n reworkData: Option\n) {\n const formatMessage = useFormatMessage();\n\n type MessageType = ComponentProps[\"type\"];\n\n function formatFeedback(\n fieldName: keyof A\n ): { type: MessageType; message: LocalizedString } | undefined {\n return pipe(\n reworkData,\n option.chain(data => data[fieldName]),\n option.map(() => ({\n type: \"warning\" as const,\n message: formatMessage(\n \"Mortgage.Dashboard.ReworkData.fieldChangedMessage\"\n ),\n })),\n option.toUndefined\n );\n }\n\n // do not override issues of the input\n function formatIssues(\n fieldName: keyof A,\n existingIssues: Option\n ): Option {\n return pipe(\n existingIssues,\n option.alt(() =>\n pipe(\n reworkData,\n option.chain(data => data[fieldName]),\n option.map(() =>\n fieldIssues.warnings([\n formatMessage(\n \"Mortgage.Dashboard.ReworkData.fieldChangedMessage\"\n ),\n ])\n )\n )\n )\n );\n }\n\n return { formatFeedback, formatIssues };\n}\n","import {\n Banner,\n ContentRow,\n Loader,\n SMSAuthorization,\n useIsMobileLayout,\n OTP,\n PositiveInteger,\n LocalizedString,\n useForm,\n} from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { constant, constVoid, pipe } from \"fp-ts/function\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport { Option } from \"fp-ts/Option\";\nimport { GenericError } from \"../globalDomain\";\nimport * as otpAPI from \"../OTP/domain\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { useFormatMessage } from \"../intl\";\nimport { ComponentProps, Dispatch, useEffect } from \"react\";\nimport {\n foldState,\n State,\n Action,\n reducerConfig,\n InsertingOtpState,\n} from \"./state\";\nimport { useSnackBar } from \"../useSnackbar\";\nimport { ApplicationLimitError } from \"../MortgageDashboard/domain\";\nimport {\n useChildSharedReducer,\n useParentSharedReducer,\n} from \"../BranchExperience/useSharedReducer\";\nimport { getGenerateOTP } from \"./getGenerateOTP\";\nimport { useValidators } from \"../Common/useValidators\";\nimport { usePortalStatusContext } from \"../PortalStatusContext\";\n\ntype Props = {\n phoneNumber: string;\n requestNotice: Option;\n otpRequestButtonLabel: LocalizedString;\n otpSubmitButtonLabel: LocalizedString;\n otpTitleLabel: LocalizedString;\n onProcessStart: TaskEither;\n onSuccess: TaskEither;\n onFailure: () => unknown;\n onGenerateOTP: ReaderTaskEither<\n otpAPI.OtpGenerationInput,\n otpAPI.OtpGenerationError | GenericError | ApplicationLimitError,\n otpAPI.OtpGenerationOutput & { transactionId: Option }\n >;\n onVerifyOTP: ReaderTaskEither<\n otpAPI.OtpVerifyInput,\n otpAPI.OtpVerifyError | GenericError,\n unknown\n >;\n length: PositiveInteger;\n disabled?: boolean;\n allowResendOTP: boolean;\n} & (\n | {\n afterLoginState?: never;\n processStarted: boolean;\n }\n | {\n afterLoginState: InsertingOtpState;\n processStarted?: never;\n }\n);\n\nfunction OTPAuthorizationInternal(\n props: Props & {\n state: State;\n dispatch: Dispatch;\n }\n) {\n const { state, dispatch } = props;\n const formatMessage = useFormatMessage();\n const isMobileLayout = useIsMobileLayout();\n const { showSnackbar } = useSnackBar();\n const { validOTP } = useValidators();\n const { portalBlocked } = usePortalStatusContext();\n\n useEffect(() => {\n if (props.afterLoginState == undefined && props.processStarted) {\n generateOTP();\n }\n }, [props.processStarted]);\n\n type OTPError =\n | otpAPI.OtpGenerationError\n | otpAPI.OtpVerifyError\n | GenericError;\n\n function errorToIssue(\n error: OTPError\n ): {\n type: Extract[\"type\"], \"warning\" | \"error\">;\n content: ComponentProps[\"content\"];\n title: Option;\n actions: ComponentProps[\"actions\"];\n } {\n const message = (() => {\n switch (error.id) {\n case \"GenericError\":\n case \"InvalidFlowId\":\n return formatMessage(\"Identification.otp.genericError\");\n case \"InvalidOTP\":\n return formatMessage(\"Identification.otp.invalidCode\", {\n remainingAttempts: error.attemptsLeft,\n });\n case \"OTPExpired\":\n return formatMessage(\"Identification.otp.expiredCode\");\n case \"MaxOtpRequestsReached\":\n return formatMessage(\"OTPAuthorizationParent.otp.maxOTPRequests\");\n case \"MaxOtpAttemptsReached\":\n return formatMessage(\"OTPAuthorizationParent.otp.maxOTPAttempts\");\n }\n })();\n return {\n type: \"error\",\n content: message,\n title: option.none,\n actions: option.none,\n };\n }\n\n const generateOTP = getGenerateOTP({\n ...props,\n onStart: () => dispatch({ type: \"SetOtpPending\", pending: true }),\n onEnd: () => dispatch({ type: \"SetOtpPending\", pending: false }),\n onError: error => dispatch({ type: \"SetGenerateOtpError\", error }),\n onSuccess: (transactionId, remainingOtpRequests) =>\n dispatch({\n type: \"HandleReceiveOTP\",\n transactionId,\n remainingOtpRequests,\n }),\n });\n\n const onSubmit = (otp: OTP) =>\n taskEither.bracket(\n taskEither.rightIO(() =>\n dispatch({ type: \"SetOtpPending\", pending: true })\n ),\n () =>\n pipe(\n props.onVerifyOTP({ otp }),\n taskEither.orElse(error =>\n taskEither.leftIO(() => {\n if (error.id === \"InvalidOTP\" || error.id === \"OTPExpired\") {\n handleReset();\n }\n if (error.id === \"MaxOtpAttemptsReached\") {\n return props.onFailure();\n }\n if (\n state.type !== \"initial\" &&\n state.type !== \"generateOtpError\" &&\n error.id === \"InvalidOTP\" &&\n error.attemptsLeft <= 0\n ) {\n if (state.remainingOtpRequests <= 0) {\n return props.onFailure();\n } else {\n dispatch({ type: \"HandleLastAttemptFailed\" });\n }\n } else {\n dispatch({ type: \"SetVerifyOtpError\", error });\n }\n })\n ),\n taskEither.chain(() => props.onSuccess)\n ),\n () =>\n taskEither.rightIO(() =>\n dispatch({ type: \"SetOtpPending\", pending: false })\n )\n );\n\n const { handleSubmit, fieldProps, handleReset } = useForm(\n {\n initialValues: {\n pin: \"\",\n },\n fieldValidators: constant({ pin: validOTP(props.length) }),\n },\n { onSubmit: ({ pin }) => onSubmit(pin) }\n );\n\n const smsAuthProps = {\n title: props.otpTitleLabel,\n phoneNumber: {\n label: formatMessage(\"Identification.otp.verifiedPhoneNumber\"),\n value: props.phoneNumber,\n },\n message: formatMessage(\"Identification.otp.message\"),\n sendOtp: {\n action: props.onProcessStart,\n label: props.otpRequestButtonLabel,\n },\n insertOtpTitle: formatMessage(\"Identification.otp.insertNumericCode\"),\n insertOtpSubtitle: props.requestNotice,\n submitLabel: props.otpSubmitButtonLabel,\n onSubmit: () => pipe(handleSubmit, taskEither.map(constVoid)),\n pinInput: fieldProps(\"pin\"),\n otpLength: props.length,\n noCodeLabel: formatMessage(\"Identification.otp.notReceivingSMS\"),\n resendOtp: pipe(\n {\n action: pipe(\n generateOTP,\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n showSnackbar({\n type: \"success\",\n action: option.none,\n message: formatMessage(\"Identification.otp.newCodeSent\"),\n });\n })\n )\n ),\n label: formatMessage(\"Identification.otp.resendCode\"),\n },\n option.fromPredicate(() => props.allowResendOTP)\n ),\n } as const;\n\n const smsAuthorization = (() => {\n if (props.afterLoginState == undefined && !props.processStarted) {\n return (\n \n );\n }\n\n return pipe(\n state,\n foldState({\n whenInitial: () => (\n \n ),\n whenGenerateOtpError: s => (\n \n ),\n whenInsertingOtp: s => (\n s.remainingOtpRequests === 0 && props.allowResendOTP\n )\n )}\n disabled={s.pending || portalBlocked}\n />\n ),\n whenVerifyOtpError: s => (\n \n ),\n whenRegenerateOtpError: s => (\n \n ),\n whenNoMoreAttempts: s => (\n generateOTP(),\n },\n ]),\n title: option.none,\n })}\n disabled\n />\n ),\n })\n );\n })();\n\n if (isMobileLayout) {\n return {smsAuthorization};\n } else {\n return smsAuthorization;\n }\n}\n\nexport function OTPAuthorization(props: Props) {\n const [state, dispatch] = useParentSharedReducer(\n reducerConfig,\n props.afterLoginState || {\n type: \"initial\",\n }\n );\n\n return (\n \n );\n}\n\nexport function OTPAuthorizationChild(props: Props) {\n const [state, dispatch] = useChildSharedReducer(reducerConfig);\n\n return pipe(\n state,\n option.fold(\n () => ,\n state => (\n \n )\n )\n );\n}\n","import {\n Body,\n Box,\n Button,\n Card,\n FormSubSection,\n PlusIcon,\n Stack,\n Space,\n Children,\n LocalizedString,\n} from \"design-system\";\n\nimport { boolean, option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../../intl\";\n\ntype Props = {\n title: LocalizedString;\n addNew: Option<{\n label: LocalizedString;\n action: () => unknown;\n disabled?: boolean;\n }>;\n children: Array;\n};\n\nexport function LiabilitySection(props: Props) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n {pipe(\n props.children.length > 0,\n boolean.fold(\n () => (\n ,\n ]}\n />\n ),\n () => (\n (\n {child}\n ))}\n />\n )\n )\n )}\n {pipe(\n props.addNew,\n option.fold(constNull, addNew => (\n \n \n \n ))\n )}\n \n \n \n );\n}\n","import { NonNegativeInteger, LocalizedString } from \"design-system\";\nimport { either, eq, nonEmptyArray, option, record, semigroup } from \"fp-ts\";\nimport { Eq } from \"fp-ts/Eq\";\nimport { pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport * as t from \"io-ts\";\nimport { optionFromNullable } from \"io-ts-types/optionFromNullable\";\nimport { mapOutput } from \"io-ts-types/lib/mapOutput\";\nimport { nonEmptyArray as nonEmptyArrayCodec } from \"io-ts-types/lib/nonEmptyArray\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { DateFromISOString } from \"io-ts-types/lib/DateFromISOString\";\nimport {\n DateFromSQLString,\n MaritalStatus,\n MoneyAmount,\n MonthYear,\n optionFromUndefined,\n optionFromArray,\n PercentageLikeFromNumber,\n GenericError,\n optional,\n Sex,\n CountryCode,\n} from \"../globalDomain\";\nimport { AddressOCR, PersonalData, PersonalDocument } from \"../IdUpload/domain\";\nimport { OtpVerifyError } from \"../OTP/domain\";\nimport { DocumentType } from \"../UploadDocuments/domain\";\nimport {\n AppraisalType,\n ConstructionType,\n PurposeOfUse,\n SubPropertyType,\n} from \"./PropertyAndAppraisal/domain\";\nimport { RuntimeLocaleKey } from \"../intl\";\nimport { withFallback } from \"io-ts-types/withFallback\";\nimport { boolean } from \"io-ts\";\n\nexport const ApplicantIndex = t.type({\n applicantIndex: NonNegativeInteger,\n});\n\nexport type ApplicantIndex = t.TypeOf;\nexport interface withApplicantIndex\n extends t.Type<\n ApplicantIndex & t.TypeOf,\n { applicantIndex: string } & t.TypeOf,\n unknown\n > {}\nexport function withApplicantIndex(\n codec: C,\n name: string = `WithApplicantIndex<${codec.name}>`\n) {\n return mapOutput(\n t.intersection([ApplicantIndex, codec], name),\n ({ applicantIndex, ...value }) => ({\n applicantIndex: String(applicantIndex),\n ...value,\n })\n );\n}\n\nexport function eqWithApplicantIndex(\n codecEq: Eq\n): Eq {\n return eq.fromEquals(\n (\n { applicantIndex: applicantIndexA, ...a },\n { applicantIndex: applicantIndexB, ...b }\n ) =>\n codecEq.equals(a as any, b as any) &&\n eq.eqNumber.equals(applicantIndexA, applicantIndexB)\n );\n}\n\nexport type ApplicantRecord = NonEmptyArray<\n ApplicantIndex & {\n data: T;\n }\n>;\n\nexport interface ApplicantsRecordC\n extends t.Type<\n ApplicantRecord>,\n Record>,\n unknown\n > {}\nexport function ApplicantsRecordC(\n codec: C,\n defaultValue?: t.TypeOf,\n name: string = `ApplicantsRecord<${codec.name}>`\n): ApplicantsRecordC {\n const applicantsRecord = t.record(t.string, codec);\n\n return new t.Type(\n name,\n nonEmptyArrayCodec(\n withApplicantIndex(\n t.type({\n data: codec,\n })\n )\n ).is,\n (unknown, context) => {\n return pipe(\n applicantsRecord.validate(unknown, context),\n either.chain(values =>\n pipe(\n defaultValue && record.isEmpty(values)\n ? { 0: defaultValue }\n : values,\n record.toArray,\n nonEmptyArray.fromArray,\n option.map(\n nonEmptyArray.traverse(\n either.getValidation(semigroup.getFirstSemigroup())\n )(([applicantIndex, value]) =>\n pipe(\n NonNegativeInteger.decode(Number(applicantIndex)),\n either.map(applicantIndex => ({\n applicantIndex,\n data: value,\n }))\n )\n )\n ),\n option.getOrElse(() => t.failure(unknown, context))\n )\n )\n );\n },\n nonEmptyArray.reduce({}, (b, { applicantIndex, data }) => ({\n ...b,\n [applicantIndex]: codec.encode(data),\n }))\n );\n}\n\nexport const ApplicantData = t.type({\n documentType: optionFromUndefined(DocumentType),\n personalData: optionFromUndefined(PersonalData),\n documentDetails: optionFromUndefined(PersonalDocument),\n permanentAddress: optionFromUndefined(AddressOCR),\n currentAddress: optionFromUndefined(AddressOCR),\n contactAddress: optionFromUndefined(AddressOCR),\n});\nexport type ApplicantData = t.TypeOf;\n\nexport const SoniaStatus = t.type(\n //should be imported from ClientProfile domain\n {\n updated: withFallback(t.boolean, false),\n updateDate: optionFromUndefined(DateFromSQLString),\n },\n \"SoniaStatus\"\n);\nexport type SoniaStatus = t.TypeOf;\n\nexport const ApplicantProfile = t.type({\n name: NonEmptyString,\n surname: NonEmptyString,\n phoneNumber: optionFromUndefined(NonEmptyString),\n phoneChecked: t.boolean,\n email: optionFromUndefined(NonEmptyString),\n emailChecked: t.boolean,\n idChecked: t.boolean,\n customerData: optionFromUndefined(ApplicantData),\n soniaStatus: optionFromUndefined(SoniaStatus),\n existingClient: t.boolean,\n});\n\nexport type ApplicantProfile = t.TypeOf;\n\nconst ApplicantRegistersDataIncompleteProfile = t.type(\n {\n completedClientProfile: t.literal(false),\n name: NonEmptyString,\n surname: NonEmptyString,\n },\n \"ApplicantRegistersDataIncompleteProfile\"\n);\n\nconst ApplicantRegistersDataCompleteProfile = t.type(\n {\n completedClientProfile: t.literal(true),\n name: NonEmptyString,\n surname: NonEmptyString,\n phoneNumber: NonEmptyString,\n },\n \"ApplicantRegistersDataCompleteProfile\"\n);\n\nexport const ApplicantRegistersData = t.union(\n [\n ApplicantRegistersDataIncompleteProfile,\n ApplicantRegistersDataCompleteProfile,\n ],\n \"ApplicantRegistersData\"\n);\n\nexport type ApplicantRegistersData = t.TypeOf;\n\nexport const CreditBureauStatus = t.keyof({\n PENDING: true,\n SUCCESS: true,\n REJECTED: true,\n});\nexport type CreditBureauStatus = t.TypeOf;\n\nexport const StatusColor = t.keyof({\n White: true,\n Gray: true,\n Red: true,\n Yellow: true,\n Green: true,\n});\nexport type StatusColor = t.TypeOf;\n\nexport const CreditType = t.keyof({\n MORTGAGE_LOAN: true,\n CONSUMER_LOAN: true,\n});\n\nexport type CreditType = t.TypeOf;\n\nexport const LoanPurpose = t.keyof({\n PURPOSE: true,\n NOT_PURPOSE: true,\n});\n\nexport type LoanPurpose = t.TypeOf;\n\nexport const OriginalLoanPurpose = t.keyof({\n PURCHASE: true,\n RECONSTRUCTION: true,\n CONSTRUCTION: true,\n REVERSE_REPAYMENT: true,\n NOT_PURPOSE: true,\n REPAYMENT_OF_PREVIOUSLY_GRANTED_LOAN: true,\n REPAYMENT_OF_PREVIOUSLY_GRANTED_NON_PURPOSE_LOAN: true,\n});\n\nexport type OriginalLoanPurpose = t.TypeOf;\n\nexport const RefinanceLoansForLivingSelection = t.keyof({\n REFINANCE_WITH_LOANS_FOR_LIVING_TRUE: true,\n REFINANCE_WITH_LOANS_FOR_LIVING_FALSE: true,\n REFINANCE_WITH_ANY_LOANS_FOR_LIVING: true,\n});\n\nexport type RefinanceLoansForLivingSelection = t.TypeOf<\n typeof RefinanceLoansForLivingSelection\n>;\n\nexport const ConsumerLoanOrMortgage = t.type(\n {\n creditType: optionFromUndefined(CreditType),\n currentBalance: optionFromUndefined(MoneyAmount),\n finalDate: optionFromUndefined(DateFromSQLString),\n loanPurpose: optionFromUndefined(LoanPurpose),\n monthlyInstallment: optionFromUndefined(MoneyAmount),\n approvedCreditAmount: optionFromUndefined(MoneyAmount),\n canBeRefinanced: optionFromUndefined(t.boolean),\n sharedCreditCoApplicantName: optionFromUndefined(NonEmptyString),\n loansForLiving: optionFromUndefined(t.boolean),\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n propertyOwner: optionFromUndefined(t.boolean),\n contractNumber: optionFromUndefined(t.string),\n originalLoanPurpose: optionFromUndefined(OriginalLoanPurpose),\n displayOriginalLoanPurpose: optionFromUndefined(t.boolean),\n displayLoansForLiving: optionFromUndefined(t.boolean),\n loansForLivingDefaultValue: optionFromUndefined(t.boolean),\n refinanceLoansForLivingSelection: optionFromUndefined(\n RefinanceLoansForLivingSelection\n ),\n provider: optionFromUndefined(NonEmptyString),\n usedForRefinance: optionFromUndefined(t.boolean),\n recordId: NonEmptyString,\n manuallyAdded: t.boolean,\n originalLoanAmount: optionFromUndefined(MoneyAmount),\n },\n \"ConsumerLoanOrMortgage\"\n);\n\nexport type ConsumerLoanOrMortgage = t.TypeOf;\n\nexport const ConsumerLoanOrMortgageAdd = t.type(\n {\n creditType: optionFromUndefined(CreditType),\n currentBalance: MoneyAmount,\n endDate: MonthYear,\n loanPurpose: optionFromUndefined(LoanPurpose),\n monthlyInstallment: MoneyAmount,\n approvedCreditAmount: MoneyAmount,\n provider: optionFromUndefined(NonEmptyString),\n usedForRefinance: optionFromUndefined(t.boolean),\n manuallyAdded: t.boolean,\n loansForLiving: t.boolean,\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n propertyOwner: optionFromUndefined(t.boolean),\n contractNumber: optionFromUndefined(t.string),\n originalLoanPurpose: optionFromUndefined(OriginalLoanPurpose),\n },\n \"ConsumerLoanOrMortgageAdd\"\n);\n\nexport type ConsumerLoanOrMortgageAdd = t.TypeOf<\n typeof ConsumerLoanOrMortgageAdd\n>;\n\nexport const Overdraft = t.type(\n {\n currentBalance: optionFromUndefined(MoneyAmount),\n overdraftLimit: optionFromUndefined(MoneyAmount),\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n changeLimit: optionFromUndefined(t.boolean),\n provider: optionFromUndefined(NonEmptyString),\n contractNumber: optionFromUndefined(t.string),\n newOverdraftLimit: optionFromUndefined(MoneyAmount),\n recordId: NonEmptyString,\n manuallyAdded: t.boolean,\n usedForRefinance: optionFromUndefined(t.boolean),\n includedInBonita: optionFromUndefined(t.boolean),\n },\n \"Overdraft\"\n);\n\nexport type Overdraft = t.TypeOf;\n\nexport const OverdraftAdd = t.type(\n {\n currentBalance: MoneyAmount,\n overdraftLimit: MoneyAmount,\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n changeLimit: optionFromUndefined(t.boolean),\n provider: optionFromUndefined(NonEmptyString),\n contractNumber: optionFromUndefined(t.string),\n newOverdraftLimit: optionFromUndefined(MoneyAmount),\n manuallyAdded: t.boolean,\n },\n \"OverdraftAdd\"\n);\n\nexport type OverdraftAdd = t.TypeOf;\n\nexport const CreditCard = t.type(\n {\n currentBalance: optionFromUndefined(MoneyAmount),\n creditCardLimit: optionFromUndefined(MoneyAmount),\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n changeLimit: optionFromUndefined(t.boolean),\n provider: optionFromUndefined(NonEmptyString),\n contractNumber: optionFromUndefined(t.string),\n newCreditCardLimit: optionFromUndefined(MoneyAmount),\n recordId: NonEmptyString,\n manuallyAdded: t.boolean,\n usedForRefinance: optionFromUndefined(t.boolean),\n includedInBonita: optionFromUndefined(t.boolean),\n },\n \"CreditCard\"\n);\n\nexport type CreditCard = t.TypeOf;\n\nexport const CreditCardAdd = t.type(\n {\n currentBalance: MoneyAmount,\n creditCardLimit: MoneyAmount,\n repaidBeforeDisbursement: optionFromUndefined(t.boolean),\n changeLimit: optionFromUndefined(t.boolean),\n provider: optionFromUndefined(NonEmptyString),\n contractNumber: optionFromUndefined(t.string),\n newCreditCardLimit: optionFromUndefined(MoneyAmount),\n manuallyAdded: t.boolean,\n },\n \"CreditCardAdd\"\n);\n\nexport type CreditCardAdd = t.TypeOf;\n\nexport const Provider = t.type({\n code: NonEmptyString,\n name: LocalizedString,\n});\n\nexport type Provider = t.TypeOf;\n\nexport const BranchesList = t.record(t.string, t.string);\n\nexport type BranchesList = t.TypeOf;\n\nexport const BankersList = t.record(t.string, t.string);\n\nexport type BankersList = t.TypeOf;\n\nexport const ApplicationAccessMode = t.keyof({\n VIEW_MODE: true,\n EDIT_MODE: true,\n UNAUTHORIZED: true,\n});\n\nexport type ApplicationAccessMode = t.TypeOf;\n\nexport const UserType = t.keyof({\n BANKER: true,\n BROKER: true,\n});\n\nexport type UserType = t.TypeOf;\n\nexport const AssignedUser = t.type({\n bankerId: optionFromUndefined(t.string),\n branchCode: optionFromUndefined(t.string),\n firstName: optionFromUndefined(t.string),\n lastName: optionFromUndefined(t.string),\n phoneNumber: optionFromUndefined(t.string),\n branchName: optionFromUndefined(t.string),\n branchAddress: optionFromUndefined(t.string),\n brokerageCompany: optionFromUndefined(t.string),\n editable: t.boolean,\n canBeHandedOverTo: optionFromUndefined(UserType),\n handedOverTo: optionFromUndefined(UserType),\n});\n\nexport type AssignedUser = t.TypeOf;\n\nexport const AssignedBrokerForBankerInfo = t.type({\n firstName: optionFromUndefined(t.string),\n lastName: optionFromUndefined(t.string),\n phoneNumber: optionFromUndefined(t.string),\n email: optionFromUndefined(t.string),\n brokerageCompany: optionFromUndefined(t.string),\n});\n\nexport type AssignedBrokerForBankerInfo = t.TypeOf<\n typeof AssignedBrokerForBankerInfo\n>;\n\nexport const AssignedBrokerForBanker = t.type({\n brokerInfo: optionFromUndefined(AssignedBrokerForBankerInfo),\n});\n\nexport type AssignedBrokerForBanker = t.TypeOf;\n\nexport const LoanList = t.type(\n {\n consumerLoansOrMortgagesList: t.array(ConsumerLoanOrMortgage),\n overdraftsList: t.array(Overdraft),\n creditCardsList: t.array(CreditCard),\n },\n \"LoanList\"\n);\n\nexport type LoanList = t.TypeOf;\n\nexport const ExistingApplication = t.type(\n {\n recordId: NonEmptyString,\n status: optionFromUndefined(t.boolean),\n loanAmount: optionFromUndefined(MoneyAmount),\n dateOfApplication: optionFromUndefined(MonthYear),\n provider: optionFromUndefined(NonEmptyString),\n monthlyInstallment: optionFromUndefined(MoneyAmount),\n overdraftLimit: optionFromUndefined(MoneyAmount),\n creditCardLimit: optionFromUndefined(MoneyAmount),\n sharedCredit: optionFromUndefined(t.boolean),\n sharedCreditCoApplicantName: optionFromUndefined(NonEmptyString),\n },\n \"ExistingApplication\"\n);\n\nexport const ApplicationType = t.keyof(\n {\n Mortgage: true,\n ConsumerLoan: true,\n Overdraft: true,\n CreditCard: true,\n },\n \"ApplicationType\"\n);\n\nexport type ApplicationType = t.TypeOf;\n\nexport type ExistingApplication = t.TypeOf;\n\nexport const ExistingApplicationStatus = t.keyof(\n {\n Terminated: true,\n WillBeSigned: true,\n },\n \"ExistingApplicationStatus\"\n);\nexport type ExistingApplicationStatus = t.TypeOf<\n typeof ExistingApplicationStatus\n>;\n\nexport const ApplicationList = t.type(\n {\n creditCardsList: t.array(ExistingApplication),\n overdraftsList: t.array(ExistingApplication),\n consumerLoansList: t.array(ExistingApplication),\n mortgagesList: t.array(ExistingApplication),\n },\n \"ApplicationList\"\n);\n\nexport type ApplicationList = t.TypeOf;\n\nexport const Residence = t.keyof(\n {\n Prague: true,\n OutsideOfPrague: true,\n OutsideOfCzechRepublic: true,\n },\n \"Residence\"\n);\n\nexport type Residence = t.TypeOf;\n\nexport const HouseholdInfo = t.type(\n {\n currentResidence: optionFromUndefined(Residence),\n currentResidenceLabel: optionFromUndefined(LocalizedString),\n numberOfAdults: t.number,\n numberOfChildren: t.number,\n },\n \"HouseholdInfo\"\n);\n\nexport type HouseholdInfo = t.TypeOf;\n\nconst LivingExpenses = t.type(\n {\n minimumMonthlyExpenses: optionFromUndefined(MoneyAmount),\n otherRegularExpenses: MoneyAmount,\n alimony: optionFromUndefined(t.boolean),\n validByCourt: optionFromUndefined(t.boolean),\n alimonyFromCourt: optionFromUndefined(MoneyAmount),\n numberOfChildrenForAlimony: t.number,\n numberOfAdultsForAlimony: t.number,\n },\n \"LivingExpenses\"\n);\n\nconst TotalLiabilities = t.type(\n {\n creditCardsLimits: MoneyAmount,\n monthlyInstallments: MoneyAmount,\n overdraftsLimit: MoneyAmount,\n totalLiabilities: MoneyAmount,\n },\n \"TotalLiabilities\"\n);\n\nexport type TotalLiabilities = t.TypeOf;\n\nexport const TotalLiabilitiesInput = t.type(\n {\n creditCardsLimits: MoneyAmount,\n monthlyInstallments: MoneyAmount,\n overdraftsLimit: MoneyAmount,\n },\n \"TotalLiabilitiesInput\"\n);\n\nexport type TotalLiabilitiesInput = t.TypeOf;\n\nexport const Expenses = t.type(\n {\n householdInfo: optionFromUndefined(HouseholdInfo, \"HouseholdInfo\"),\n livingExpenses: optionFromUndefined(LivingExpenses, \"LivingExpenses\"),\n totalLiabilities: TotalLiabilities,\n sameHouseholdAsApplicant: optionFromUndefined(\n t.boolean,\n \"SameHouseholdAsApplicant\"\n ),\n },\n \"Expenses\"\n);\n\nexport type Expenses = t.TypeOf;\n\nexport const EducationCZ = t.keyof({\n Elementary: true,\n Apprenticed: true,\n ApprenticedWithLeavingExam: true,\n SecondaryWithLeavingExam: true,\n College: true,\n University: true,\n});\n\nexport type EducationCZ = t.TypeOf;\n\nexport const EducationSK = t.keyof({\n ElementarySchool: true,\n SecondaryWithLeavingExam: true,\n SecondaryWithoutLeavingExam: true,\n UniversityAbroad: true,\n UniversityInSlovakRepublik: true,\n});\n\nexport type EducationSK = t.TypeOf;\n\nexport const Education = t.union([EducationCZ, EducationSK]);\nexport type Education = t.TypeOf;\n\nexport const HousingTypeCZ = t.keyof({\n Own: true,\n Rental: true,\n Parents: true,\n Cooperative: true,\n Other: true,\n});\nexport type HousingTypeCZ = t.TypeOf;\n\nexport const HousingTypeSK = t.keyof({\n Other: true,\n OwnFlat: true,\n OwnHouse: true,\n ProvidedByEmployer: true,\n RentFromHousingAssociation: true,\n RentFromIndividual: true,\n RentFromState: true,\n Parents: true,\n});\nexport type HousingTypeSK = t.TypeOf;\n\nexport const HousingType = t.union([HousingTypeCZ, HousingTypeSK]);\nexport type HousingType = t.TypeOf;\n\nexport const PersonalInformation = t.type({\n maritalStatus: optionFromUndefined(MaritalStatus),\n maritalStatusLabel: optionFromUndefined(LocalizedString),\n commonProperty: optionFromUndefined(t.boolean),\n commonPropertyLessThan6M: optionFromUndefined(t.boolean),\n education: optionFromUndefined(Education),\n educationLabel: optionFromUndefined(LocalizedString),\n divorcedMoreThan3Y: optionFromUndefined(t.boolean),\n});\nexport type PersonalInformation = t.TypeOf;\n\nexport const CurrentAddress = t.type({\n housingType: optionFromUndefined(HousingType),\n housingTypeLabel: optionFromUndefined(LocalizedString),\n currentAddressSince: optionFromUndefined(MonthYear),\n});\nexport type CurrentAddress = t.TypeOf;\n\nexport const AdditionalDetails = t.type({\n personalInformation: PersonalInformation,\n currentAddress: CurrentAddress,\n});\nexport type AdditionalDetails = t.TypeOf;\n\nexport const CPIAnswers = t.type(\n {\n ageBetweenLimits: optionFromUndefined(t.boolean),\n incapacityToWork: t.boolean,\n cancer: t.boolean,\n invalidity: t.boolean,\n selfEmployed: optionFromUndefined(t.boolean),\n // CZ answers\n disability: optionFromUndefined(t.boolean),\n medicalSupervision: optionFromUndefined(t.boolean),\n noticePeriod: optionFromUndefined(t.boolean),\n probation: optionFromUndefined(t.boolean),\n stateEmployment: optionFromUndefined(t.boolean),\n // SK answers\n situationListedAbove: optionFromUndefined(t.boolean),\n ztpCard: optionFromUndefined(t.boolean),\n employed: optionFromUndefined(t.boolean),\n },\n \"CPIAnswers\"\n);\nexport type CPIAnswers = t.TypeOf;\n\nexport const CPIEligibilityStatus = t.keyof({\n ELIGIBLE: true,\n PARTIAL_ELIGIBLE: true,\n NOT_ELIGIBLE: true,\n});\n\nexport type CPIEligibilityStatus = t.TypeOf;\n\nexport const CPIData = t.type({\n cpiAnswers: ApplicantsRecordC(optionFromUndefined(CPIAnswers), option.none),\n cpiEligibility: ApplicantsRecordC(\n optionFromUndefined(CPIEligibilityStatus),\n option.none\n ),\n});\nexport type CPIData = t.TypeOf;\n\nexport const ApplicantDetailsConfig = t.type({\n hasMaritalStatus: t.boolean,\n maritalStatus: optionFromUndefined(MaritalStatus),\n hasBirthDate: t.boolean,\n hasEmploymentInfo: t.boolean,\n hasProbationInfo: t.boolean,\n hasCompletedCPI: t.boolean,\n hasCompletedPreScoring: t.boolean,\n hasMainIncomeTypeEmployed: t.boolean,\n sameHousehold: t.boolean,\n});\nexport type ApplicantDetailsConfig = t.TypeOf;\n\nexport const BonitaResults = t.intersection(\n [\n t.type(\n {\n debtRatio: PercentageLikeFromNumber,\n maxLoanAmount: t.number,\n maxMonthlyInstallment: t.number,\n stressDebtRatio: PercentageLikeFromNumber,\n totalActualExpenses: t.number,\n debtServiceToIncomeRatio: optionFromUndefined(PercentageLikeFromNumber),\n debtToIncomeRatio: optionFromUndefined(PercentageLikeFromNumber),\n dtiOverLimit: t.boolean,\n dstiOverLimit: t.boolean,\n },\n \"Results\"\n ),\n t.union(\n [\n t.type(\n {\n simplifiedVersion: t.literal(false),\n eligibleIncome: t.number,\n },\n \"Full\"\n ),\n t.type(\n {\n simplifiedVersion: t.literal(true),\n },\n \"Simplified\"\n ),\n ],\n \"Type\"\n ),\n ],\n \"BonitaResults\"\n);\n\nexport type BonitaResults = t.TypeOf;\n\nexport const BonitaError = t.keyof({\n NOT_UPDATED: true,\n TECHNICAL_ERROR: true,\n});\nexport type BonitaError = t.TypeOf;\n\nexport const PropertyAndAppraisalDetails = t.type({\n propertyType: optionFromUndefined(SubPropertyType),\n address: optionFromUndefined(NonEmptyString),\n actualValue: optionFromUndefined(MoneyAmount),\n futureValue: optionFromUndefined(MoneyAmount),\n});\n\nexport type PropertyAndAppraisalDetails = t.TypeOf<\n typeof PropertyAndAppraisalDetails\n>;\n\nexport const PropertyAndAppraisalDetailsResponse = t.type({\n listOfPropertyAndAppraisalDetails: optionFromArray(\n PropertyAndAppraisalDetails\n ),\n sectionAutomaticallyValidated: t.boolean,\n});\n\nexport type PropertyAndAppraisalDetailsResponse = t.TypeOf<\n typeof PropertyAndAppraisalDetailsResponse\n>;\n\nexport const OfferError = t.keyof(\n {\n EXPIRED: true,\n TECHNICAL_ERROR: true,\n DATE_OF_BIRTH_UPDATED: true,\n INELIGIBLE_CPI_PACKAGE: true,\n CPI_RESULT_ERROR: true,\n NO_CPI_PACKAGE_AVAILABLE: true,\n HQ_ONLY_APPLICANT_INELIGIBLE: true,\n HQ_BOTH_APPLICANTS_INELIGIBLE: true,\n HQ_CHANGE_INSURED_CLIENT: true,\n INTEREST_RATE_CHANGED: true,\n },\n \"OfferError\"\n);\nexport type OfferError = t.TypeOf;\n\nexport const OfferWarning = t.keyof({\n OFFER_TOO_HIGH: true,\n MAIN_APPLICANT_INVALID_MAX_TENOR: true,\n CO_APPLICANT_INVALID_MAX_TENOR: true,\n LTV_OVER_LIMIT: true,\n});\nexport type OfferWarning = t.TypeOf;\n\nexport const BonitaApplicantState = t.type(\n {\n hasCBLiabilities: t.boolean,\n hasIncomeDetails: t.boolean,\n hasExpensesDetails: t.boolean,\n hasPreApprovedIncome: optionFromNullable(t.boolean),\n isMarried: t.boolean,\n },\n \"BonitaApplicantState\"\n);\nexport type BonitaApplicantState = t.TypeOf;\n\nexport const ApplicationStatus = t.keyof({\n APPROVED: true,\n HARD_KO: true,\n MANUAL: true,\n REJECTED: true,\n TIMEOUT: true,\n});\nexport type ApplicationStatus = t.TypeOf;\n\nexport const ErrorProfileType = t.keyof({\n CLIENT_UNDERAGE: true,\n CLIENT_OVERAGE: true,\n});\n\nexport const ClientProfileError = ApplicantsRecordC(\n t.type({\n applicantIndex: t.string,\n error: ErrorProfileType,\n })\n);\n\nexport type ClientProfileError = t.TypeOf;\n\nexport type ErrorProfileType = t.TypeOf;\n\nconst ApplicationIsLockedError = t.type({\n id: t.literal(\"ApplicationIsLocked\"),\n});\n\nconst InvalidClientIDError = t.type({\n id: t.literal(\"InvalidClientID\"),\n});\n\nconst CardRecalledError = t.type({\n id: t.literal(\"CardRecalled\"),\n});\n\nconst BonitaStatusIncompleteError = t.type({\n id: t.literal(\"BonitaStatusIncomplete\"),\n});\n\nexport const MTGSubmitApplicationError = t.union([\n ApplicationIsLockedError,\n BonitaStatusIncompleteError,\n GenericError,\n]);\n\nexport type MTGSubmitApplicationError = t.TypeOf<\n typeof MTGSubmitApplicationError\n>;\n\nexport const MTG3POtpVerifyError = t.union([\n OtpVerifyError,\n ApplicationIsLockedError,\n InvalidClientIDError,\n CardRecalledError,\n]);\n\nexport type MTG3POtpVerifyError = t.TypeOf;\n\nexport const ApplicationLimitError = t.type({\n id: t.literal(\"ApplicationLimitPerClientExceeded\"),\n name: t.string,\n});\n\nexport type ApplicationLimitError = t.TypeOf;\n\nexport const ApplicationInvalidPhaseError = t.type({\n id: t.literal(\"ApplicationInvalidPhase\"),\n});\nexport type ApplicationInvalidPhaseError = t.TypeOf<\n typeof ApplicationInvalidPhaseError\n>;\n\nexport const PreliminaryDecisionStatus = t.keyof({\n OK: true,\n INDIVIDUAL_ASSESSMENT: true,\n NOT_OK_CAN_ESCALATE: true,\n NOT_OK_CANNOT_ESCALATE: true,\n AUTOMATIC_DECISION_NOT_AVAILABLE: true,\n ERROR: true,\n TIMEOUT: true,\n});\nexport type PreliminaryDecisionStatus = t.TypeOf<\n typeof PreliminaryDecisionStatus\n>;\n\nexport const FinalDecisionStatus = t.keyof({\n OK: true,\n DECLINE_CAN_ESCALATE: true,\n DECLINE_CANNOT_ESCALATE: true,\n REWORK: true,\n ERROR: true,\n TIMEOUT: true,\n CONTRACT_INITIATED: true,\n});\nexport type FinalDecisionStatus = t.TypeOf;\n\nexport const SectionName = t.keyof({\n Offer: true,\n Registers: true,\n Overview: true,\n});\nexport type SectionName = t.TypeOf;\n\nexport const ReworkAction = t.type(\n {\n comment: t.string,\n reworkCategory: t.string,\n },\n \"ReworkAction\"\n);\n\nexport type ReworkAction = t.TypeOf;\n\nexport const ReworkSection = t.keyof(\n {\n AdditionalDetails: true,\n Bonita: true,\n ClientProfile: true,\n Documents: true,\n Offer: true,\n PropertyAndAppraisal: true,\n PurposeAndFinancing: true,\n Registers: true,\n },\n \"ReworkSection\"\n);\n\nexport type ReworkSection = t.TypeOf;\n\nexport const ReworkActions = t.type(\n {\n reworkActions: t.array(ReworkAction),\n reworkSections: t.array(ReworkSection),\n },\n \"ReworkActions\"\n);\n\nexport type ReworkActions = t.TypeOf;\n\n/**\n * REWORK DATA\n */\n\n/**\n * ReworkAdditionalDetails\n */\nconst ReworkCurrentAddress = optional(\n {\n currentAddressSince: MonthYear,\n housingType: HousingType,\n },\n \"ReworkCurrentAddress\"\n);\n\nexport type ReworkCurrentAddress = t.TypeOf;\n\nconst ReworkPersonalInformation = optional(\n {\n commonProperty: t.boolean,\n commonPropertyLessThan6M: t.boolean,\n divorcedMoreThan3Y: t.boolean,\n education: Education,\n martialStatus: MaritalStatus,\n },\n \"ReworkPersonalInformation\"\n);\n\nexport type ReworkPersonalInformation = t.TypeOf<\n typeof ReworkPersonalInformation\n>;\n\nconst ReworkAdditionalDetailsData = optional(\n {\n currentAddress: ReworkCurrentAddress,\n personalInformation: ReworkPersonalInformation,\n },\n \"ReworkAdditionalDetailsData\"\n);\n\nexport type ReworkAdditionalDetailsData = t.TypeOf<\n typeof ReworkAdditionalDetailsData\n>;\n\nconst ReworkAdditionalDetails = t.type(\n {\n additionalDetails: ApplicantsRecordC(\n optionFromUndefined(ReworkAdditionalDetailsData),\n option.none\n ),\n },\n \"ReworkAdditionalDetails\"\n);\n\nexport type ReworkAdditionalDetails = t.TypeOf;\n\n/**\n * ReworkBonita\n */\nconst ReworkHouseholdInfo = optional(\n {\n applicantIndex: t.string,\n currentResidence: t.string,\n currentResidenceLabel: t.string,\n numberOfAdults: t.number,\n numberOfChildren: t.number,\n },\n \"ReworkHouseholdInfo\"\n);\n\nexport type ReworkHouseholdInfo = t.TypeOf;\n\nconst ReworkLivingExpenses = optional(\n {\n alimonyExpenses: MoneyAmount,\n minimumMonthlyExpenses: MoneyAmount,\n otherRegularExpenses: MoneyAmount,\n alimony: boolean,\n validByCourt: boolean,\n alimonyFromCourt: MoneyAmount,\n numberOfChildrenForAlimony: t.number,\n numberOfAdultsForAlimony: t.number,\n },\n \"ReworkLivingExpenses\"\n);\n\nexport type ReworkLivingExpenses = t.TypeOf;\n\nconst ReworkTotalLiabilities = optional(\n {\n creditCardsLimits: MoneyAmount,\n monthlyInstallments: MoneyAmount,\n overdraftsLimit: MoneyAmount,\n totalLiabilities: MoneyAmount,\n },\n \"ReworkTotalLiabilities\"\n);\n\nexport type ReworkTotalLiabilities = t.TypeOf;\n\nconst ReworkExpenses = optional(\n {\n applicantIndex: t.string,\n householdInfo: ReworkHouseholdInfo,\n livingExpenses: ReworkLivingExpenses,\n sameHouseholdAsApplicant: t.boolean,\n totalLiabilities: ReworkTotalLiabilities,\n },\n \"ReworkExpenses\"\n);\n\nexport type ReworkExpenses = t.TypeOf;\n\nconst ReworkCompanyInfo = optional(\n {\n applicantsShareHigherThan33: t.boolean,\n businessSector: t.string,\n businessStartingDate: MonthYear,\n companyIco: t.string,\n companyName: t.string,\n addIco: t.boolean,\n nameOfEntrepreneur: t.string,\n entrepreneurIco: t.string,\n country: t.string,\n street: t.string,\n phone: t.string,\n equityPositive: t.boolean,\n freelancerType: t.string,\n nameOf3P: t.string,\n stakeInCompany: t.number,\n },\n \"ReworkCompanyInfo\"\n);\n\nexport type ReworkCompanyInfo = t.TypeOf;\n\nconst ReworkContractInfo = optional(\n {\n contractIndefinitePeriod: t.boolean,\n contractPeriodExpiration: MonthYear,\n employedInSpecificProfessions: t.boolean,\n employmentType: t.string,\n inProbation: t.boolean,\n jobPosition: t.string,\n lengthOfUninterruptedCurrentEmployment: t.number,\n lengthOfUninterruptedOverallEmployment: t.number,\n paymentMethod: t.string,\n paymentMethodLabel: t.string,\n startingDate: MonthYear,\n workBasedOnAgreementOnWorkingActivity: t.boolean,\n },\n \"ReworkContractInfo\"\n);\n\nexport type ReworkContractInfo = t.TypeOf;\n\nconst ReworkIncomeInfo = optional(\n {\n alimonyChildrenInvolved: t.number,\n allowanceType: t.string,\n amortizationOfRentedRe: t.number,\n annualGrossIncome: t.number,\n bruttoComissions: t.number,\n businessGrossIncome: t.number,\n employedInCompany: t.boolean,\n equityFromLastYear: t.number,\n grossIncomes: t.number,\n incomeAsDeductibleExpenses: t.boolean,\n incomeDescription: t.string,\n incomeFromRentContract: t.number,\n incomeSource: t.string,\n incomeSourceLabel: t.string,\n isAlimonyIdentifiable: t.boolean,\n isAlimonyOutsideCountry: t.boolean,\n isApplicantDeclareAsUserInDeclaration: t.boolean,\n isCooperativeOwnership: t.boolean,\n keepsAccountancy: t.boolean,\n last3YearsPaidSharedProfit: t.number,\n lastPeriodProfit: t.number,\n monthlyAlimonyIncome: t.number,\n monthlyIncome: t.number,\n monthlyPension: t.number,\n monthlyRent: t.number,\n monthlySocialBenefit: t.number,\n negativeBusinessProfit: t.boolean,\n pensionType: t.string,\n profitSharingIncome: t.boolean,\n r101BruttoIncomes: t.number,\n r201IncomeFromLease: t.number,\n r37PartialTaxBase: t.number,\n r38PartialTaxBase: t.number,\n r39PartialTaxBase: t.number,\n r74TaxAfterClaimedRelief: t.number,\n reCoOwned: t.boolean,\n reInPersonalOwnership: t.boolean,\n reUsedAsCollateral: t.boolean,\n retirementRentType: t.string,\n salaryCurrency: t.string,\n specialTypeOfIncome: t.string,\n tax: t.number,\n taxBase: t.number,\n typeOfRent: t.string,\n youngPeopleConditions: t.boolean,\n taxAdvisor: t.boolean,\n calculationBasedOnTurnover: t.boolean,\n profitLastPeriodPositive: t.boolean,\n },\n \"ReworkIncomeInfo\"\n);\n\nexport type ReworkIncomeInfo = t.TypeOf;\n\nconst ReworkAdditionalIncomes = optional(\n {\n companyInfo: ReworkCompanyInfo,\n contractInfo: ReworkContractInfo,\n incomeInfo: ReworkIncomeInfo,\n recordId: t.string,\n },\n \"ReworkAdditionalIncomes\"\n);\n\nexport type ReworkAdditionalIncomes = t.TypeOf;\n\nconst ReworkIncomes = optional(\n {\n additionalIncomes: t.array(ReworkAdditionalIncomes),\n applicantIndex: t.string,\n companyInfo: ReworkCompanyInfo,\n contractInfo: ReworkContractInfo,\n incomeInfo: ReworkIncomeInfo,\n simplifiedVersion: t.boolean,\n totalAvgMonthlyIncome: t.number,\n },\n \"ReworkIncomes\"\n);\n\nexport type ReworkIncomes = t.TypeOf;\n\nexport type CommonReworkIncomes = Omit<\n ReworkIncomes,\n | \"additionalIncomes\"\n | \"applicantIndex\"\n | \"simplifiedVersion\"\n | \"totalAvgMonthlyIncome\"\n>;\n\nconst ReworkBonita = optional(\n {\n expenses: ApplicantsRecordC(\n optionFromUndefined(ReworkExpenses),\n option.none\n ),\n incomes: ApplicantsRecordC(optionFromUndefined(ReworkIncomes), option.none),\n },\n \"ReworkBonita\"\n);\n\nexport type ReworkBonita = t.TypeOf;\n\n/**\n * ReworkClientProfile\n */\nconst ReworkDocumentDetails = optional(\n {\n authority: t.string,\n authorityCountry: t.string,\n dateOfIssuing: DateFromSQLString,\n idNumber: t.string,\n issuer: t.string,\n validUntil: DateFromSQLString,\n },\n \"ReworkDocumentDetails\"\n);\n\nexport type ReworkDocumentDetails = t.TypeOf;\n\nconst ReworkAddress = optional(\n {\n city: t.string,\n country: CountryCode,\n streetName: t.string,\n streetNumber: t.string,\n zipCode: t.string,\n provinceName: t.string,\n },\n \"ReworkAddress\"\n);\n\nexport type ReworkAddress = t.TypeOf;\n\nconst ReworkPersonalData = optional(\n {\n birthNumber: t.string,\n citizenship: t.string,\n countryOfBirth: t.string,\n dateOfBirth: DateFromSQLString,\n maritalStatus: MaritalStatus,\n name: t.string,\n nationality: t.string,\n placeOfBirth: t.string,\n sex: Sex,\n surname: t.string,\n title: t.string,\n titleAfter: t.string,\n titleBefore: t.string,\n },\n \"ReworkPersonalData\"\n);\n\nexport type ReworkPersonalData = t.TypeOf;\n\nconst ReworkCustomer = optional(\n {\n documentDetails: ReworkDocumentDetails,\n documentType: DocumentType,\n email: t.string,\n permanentAddress: ReworkAddress,\n personalData: ReworkPersonalData,\n phoneNumber: t.string,\n },\n \"ReworkCustomer\"\n);\n\nexport type ReworkCustomer = t.TypeOf;\n\nconst ReworkClientProfileData = optional(\n {\n customer: ReworkCustomer,\n },\n \"ReworkClientProfileData\"\n);\n\nexport type ReworkClientProfileData = t.TypeOf;\n\nconst ReworkClientProfile = t.type(\n {\n clientProfile: ApplicantsRecordC(\n optionFromUndefined(ReworkClientProfileData),\n option.none\n ),\n },\n \"ReworkClientProfile\"\n);\n\nexport type ReworkClientProfile = t.TypeOf;\n\n/**\n * ReworkOffer\n */\nconst ReworkLoanType = t.keyof(\n {\n Combined: true,\n NonPurpose: true,\n Purpose: true,\n },\n \"ReworkLoanType\"\n);\n\nconst ReworkOfferResult = optional(\n {\n apr: t.number,\n fixationPeriod: t.number,\n insuranceFee: MoneyAmount,\n interestRate: t.number,\n monthlyInstallment: MoneyAmount,\n selectedOffer: t.string,\n },\n \"ReworkOfferResult\"\n);\n\nconst ReworkOfferSummary = optional(\n {\n duration: t.number,\n loanAmount: MoneyAmount,\n loanToValue: t.number,\n },\n \"ReworkOfferSummary\"\n);\n\nconst TenorType = t.keyof(\n {\n Years: true,\n Months: true,\n },\n \"TenorType\"\n);\n\nconst Tenor = t.type(\n {\n tenorValue: NonNegativeInteger,\n tenorType: TenorType,\n },\n \"Tenor\"\n);\n\nconst ReworkOffer = optional(\n {\n appraisalFee: MoneyAmount,\n collateralType: t.string,\n dateOfBirth: t.string,\n dateOfBirthCoApplicant: t.string,\n dayOfInstallment: t.number,\n estimatedPropertyValue: MoneyAmount,\n loanAmount: MoneyAmount,\n loanPurpose: t.string,\n loanType: ReworkLoanType,\n nonPurposeAmount: MoneyAmount,\n nonSpecifiedProperty: t.boolean,\n totalFeesDiscount: MoneyAmount,\n greenMortgage: t.boolean,\n offerResult: ReworkOfferResult,\n offerSummary: ReworkOfferSummary,\n processingFee: MoneyAmount,\n purposeAmount: MoneyAmount,\n selectedInsurance: t.string,\n selectedInsuredClient: t.string,\n tenor: Tenor,\n },\n \"ReworkOffer\"\n);\n\nexport type ReworkOffer = t.TypeOf;\n\n/**\n * ReworkPropertyAndAppraisal\n */\nconst ReworkApartmentInformation = optional(\n {\n isOutOfRange: t.boolean,\n isRecreationOrHighRisk: t.boolean,\n isTechnicalConditionUnmaintained: t.boolean,\n moreThanFiveRooms: t.boolean,\n },\n \"ReworkApartmentInformation\"\n);\n\nexport type ReworkApartmentInformation = t.TypeOf<\n typeof ReworkApartmentInformation\n>;\n\nconst ReworkAppraisalDetails = optional(\n {\n addressOfProperty: t.string,\n dateOfEvaluation: DateFromISOString,\n firstName: t.string,\n lastName: t.string,\n valueOfProperty: MoneyAmount,\n },\n \"ReworkAppraisalDetails\"\n);\n\nexport type ReworkAppraisalDetails = t.TypeOf;\n\nconst ReworkOtherInformation = optional(\n {\n commentsForAppraiser: t.string,\n districtOfProperty: t.string,\n isDifferentContact: t.boolean,\n nameOfContact: t.string,\n phoneNumber: t.string,\n },\n \"ReworkOtherInformation\"\n);\n\nexport type ReworkOtherInformation = t.TypeOf;\n\nconst ReworkAppraisalQuestions = optional(\n {\n apartmentInformation: ReworkApartmentInformation,\n appraisalDetails: ReworkAppraisalDetails,\n constructionType: ConstructionType,\n developerProject: t.string,\n externalAppraisal: t.boolean,\n floodZoneIV: t.boolean,\n legalConstraint: t.boolean,\n moreThan10Apartments: t.boolean,\n noLegalAccessToTheProperty: t.boolean,\n originalAppraisal: t.boolean,\n otherInformation: ReworkOtherInformation,\n otherRestrictions: t.boolean,\n pledgeForAnotherInstitution: t.boolean,\n },\n \"ReworkAppraisalQuestions\"\n);\n\nexport type ReworkAppraisalQuestions = t.TypeOf<\n typeof ReworkAppraisalQuestions\n>;\n\nconst ReworkAppraisal = optional(\n {\n appraisalQuestions: ReworkAppraisalQuestions,\n appraisalType: AppraisalType,\n },\n \"ReworkAppraisal\"\n);\n\nexport type ReworkAppraisal = t.TypeOf;\n\nconst ReworkRisk = optional(\n {\n additionalNote: t.string,\n checked: t.boolean,\n riskId: t.string,\n riskText: RuntimeLocaleKey,\n },\n \"ReworkRisk\"\n);\n\nexport type ReworkRisk = t.TypeOf;\n\nconst ReworkPropertyRisk = optional(\n {\n comment: t.string,\n hasRisks: t.boolean,\n riskList: t.array(ReworkRisk),\n },\n \"ReworkPropertyRisk\"\n);\n\nexport type ReworkPropertyRisk = t.TypeOf;\n\nconst ReworkPropertyAddress = optional(\n {\n city: t.string,\n numberOfApartment: t.string,\n numberOfDescriptiveOrParcel: t.string,\n postCode: t.string,\n street: t.string,\n },\n \"ReworkPropertyAddress\"\n);\n\nexport type ReworkPropertyAddress = t.TypeOf;\n\nconst ReworkSubProperty = optional(\n {\n address: ReworkPropertyAddress,\n purpose: PurposeOfUse,\n subPropertyId: t.string,\n type: SubPropertyType,\n },\n \"ReworkSubProperty\"\n);\n\nexport type ReworkSubProperty = t.TypeOf;\n\nconst ReworkPropertyAndAppraisalItem = optional(\n {\n actualValue: MoneyAmount,\n appraisalFee: MoneyAmount,\n propertyInsuranceFee: MoneyAmount,\n appraisal: ReworkAppraisal,\n futureValue: MoneyAmount,\n isPledged: t.boolean,\n propertyId: t.string,\n propertyRisk: ReworkPropertyRisk,\n subProperties: t.array(ReworkSubProperty),\n },\n \"ReworkPropertyAndAppraisalItem\"\n);\n\nexport type ReworkPropertyAndAppraisalItem = t.TypeOf<\n typeof ReworkPropertyAndAppraisalItem\n>;\n\nconst ReworkPropertyAndAppraisal = optional(\n {\n propertyAndAppraisalList: t.array(ReworkPropertyAndAppraisalItem),\n },\n \"ReworkPropertyAndAppraisal\"\n);\n\nexport type ReworkPropertyAndAppraisal = t.TypeOf<\n typeof ReworkPropertyAndAppraisal\n>;\n\n/**\n * ReworkPurposeAndFinancing\n */\nconst Disbursement = t.keyof(\n {\n DepositAccountWithARealEstateAgency: true,\n DirectlyAccordingToThePurpose: true,\n EscrowAccount: true,\n LawyerCustody: true,\n None: true,\n NotApplicable: true,\n NotaryCustody: true,\n WithoutCustody: true,\n },\n \"Disbursement\"\n);\n\nconst ReworkRegisteredPledge = t.keyof(\n {\n AlreadyRegisteredPledge: true,\n None: true,\n NotApplicable: true,\n ProposalForRegistrationOfPledge: true,\n },\n \"ReworkRegisteredPledge\"\n);\n\nconst IsOwnershipFromHousingType = t.keyof(\n {\n No: true,\n NotApplicable: true,\n Yes: true,\n },\n \"IsOwnershipFromHousingType\"\n);\n\nconst ReworkOwnerClientEnum = t.keyof(\n {\n No: true,\n None: true,\n NotApplicable: true,\n Yes: true,\n },\n \"PreviousClientsAreCurrentBorrowers\"\n);\n\nconst PurposeOfOriginalInvestment = t.keyof(\n {\n ConstructionOrReconstruction: true,\n None: true,\n NotApplicable: true,\n Purchase: true,\n },\n \"PurposeOfOriginalInvestment\"\n);\n\nconst TypeOfAcquiringOfRentalRights = t.keyof(\n {\n AnotherCooperativeShareBuy: true,\n None: true,\n NotApplicable: true,\n ObtainingTheRightToLease: true,\n },\n \"TypeOfAcquiringOfRentalRights\"\n);\n\nconst TypeOfSettlement = t.keyof(\n {\n None: true,\n NotApplicable: true,\n SettlementOfCoOwnershipClaims: true,\n SettlementOfInheritanceClaimsOnTheProperty: true,\n SettlementOfPropertyClaims: true,\n },\n \"TypeOfSettlement\"\n);\n\nconst ReworkAdditionalInfo = optional(\n {\n disbursement: Disbursement,\n disbursementBasedOnRegisteredPledge: ReworkRegisteredPledge,\n isOwnershipFromHousingType: IsOwnershipFromHousingType,\n previousClientsAreCurrentBorrowers: ReworkOwnerClientEnum,\n propertyOwner: ReworkOwnerClientEnum,\n purposeOfOriginalInvestment: PurposeOfOriginalInvestment,\n stateOfRegisteredPledge: ReworkRegisteredPledge,\n typeOfAcquiringOfRentalRights: TypeOfAcquiringOfRentalRights,\n typeOfSettlement: TypeOfSettlement,\n },\n \"ReworkAdditionalInfo\"\n);\n\nexport type ReworkAdditionalInfo = t.TypeOf;\n\nconst ReworkFinancing = optional(\n {\n amountOfLoan: MoneyAmount,\n amountOfNonOwnFunds: MoneyAmount,\n amountOfOwnFunds: MoneyAmount,\n },\n \"ReworkFinancing\"\n);\n\nexport type ReworkFinancing = t.TypeOf;\n\nconst ReworkLoanPurpose = t.keyof(\n {\n CONSTRUCTION: true,\n NON_PURPOSE: true,\n PAYMENT_OF_COOPERATIVE_SHARE: true,\n PURCHASE: true,\n PURCHASE_FROM_DEVELOPER_PROJECT: true,\n RECONSTRUCTION: true,\n REFINANCING_OF_LOANS: true,\n REIMBURSEMENT_OF_OWN_FUNDS: true,\n SETTLEMENT_OF_CO_OWNERSHIP: true,\n },\n \"ReworkLoanPurpose\"\n);\n\nconst ReworkPurpose = optional(\n {\n additionalInfo: ReworkAdditionalInfo,\n creditType: CreditType,\n currentBalance: MoneyAmount,\n financedProperty: t.string,\n financing: ReworkFinancing,\n loanPurpose: ReworkLoanPurpose,\n loanPurposeLabel: t.string,\n loanType: ReworkLoanType,\n provider: t.string,\n purposeId: t.string,\n },\n \"ReworkPurpose\"\n);\n\nexport type ReworkPurpose = t.TypeOf;\n\nconst ReworkPurposeAndFinancing = optional(\n {\n purposes: t.array(ReworkPurpose),\n },\n \"ReworkPurposeAndFinancing\"\n);\n\nexport type ReworkPurposeAndFinancing = t.TypeOf<\n typeof ReworkPurposeAndFinancing\n>;\n\n/**\n * ReworkRegisters\n */\nconst ReworkCreditCard = optional(\n {\n currentBalance: MoneyAmount,\n contractNumber: t.string,\n creditCardLimit: MoneyAmount,\n newCreditCardLimit: MoneyAmount,\n provider: t.string,\n recordId: t.string,\n repaidBeforeDisbursement: t.boolean,\n },\n \"ReworkCreditCard\"\n);\n\nexport type ReworkCreditCard = t.TypeOf;\n\nconst ReworkExistingApplication = optional(\n {\n creditCardLimit: MoneyAmount,\n monthlyInstallment: MoneyAmount,\n overdraftLimit: MoneyAmount,\n provider: t.string,\n recordId: t.string,\n },\n \"ReworkExistingApplication\"\n);\n\nexport type ReworkExistingApplication = t.TypeOf<\n typeof ReworkExistingApplication\n>;\n\nconst ReworkConsumerLoanOrMortgage = optional(\n {\n approvedCreditAmount: MoneyAmount,\n contractNumber: t.string,\n creditType: CreditType,\n currentBalance: MoneyAmount,\n finalDate: DateFromSQLString,\n isUsedForRefinance: t.boolean,\n loansForLiving: t.boolean,\n monthlyInstallment: MoneyAmount,\n originalLoanPurpose: OriginalLoanPurpose,\n propertyOwner: t.boolean,\n provider: t.string,\n recordId: t.string,\n repaidBeforeDisbursement: t.boolean,\n },\n \"ReworkConsumerLoanOrMortgage\"\n);\n\nexport type ReworkConsumerLoanOrMortgage = t.TypeOf<\n typeof ReworkConsumerLoanOrMortgage\n>;\n\nconst ReworkOverdraft = optional(\n {\n currentBalance: MoneyAmount,\n contractNumber: t.string,\n newOverdraftLimit: MoneyAmount,\n overdraftLimit: MoneyAmount,\n provider: t.string,\n recordId: t.string,\n repaidBeforeDisbursement: t.boolean,\n },\n \"ReworkOverdraft\"\n);\n\nexport type ReworkOverdraft = t.TypeOf;\n\nconst ReworkCreditBureauResult = optional(\n {\n creditCards: t.array(ReworkCreditCard),\n existingApplications: t.array(ReworkExistingApplication),\n existingLoans: t.array(ReworkConsumerLoanOrMortgage),\n overdrafts: t.array(ReworkOverdraft),\n },\n \"ReworkCreditBureauResult\"\n);\n\nexport type ReworkCreditBureauResult = t.TypeOf<\n typeof ReworkCreditBureauResult\n>;\n\nconst ReworkRegisters = t.type(\n {\n creditBureauResults: ApplicantsRecordC(\n optionFromUndefined(ReworkCreditBureauResult),\n option.none\n ),\n },\n \"ReworkRegisters\"\n);\n\nexport type ReworkRegisters = t.TypeOf;\n\n/**\n * ReworkData\n */\nexport const ReworkData = optional(\n {\n reworkAdditionalDetails: ReworkAdditionalDetails,\n reworkBonita: ReworkBonita,\n reworkClientProfile: ReworkClientProfile,\n reworkOffer: ReworkOffer,\n reworkPropertyAndAppraisal: ReworkPropertyAndAppraisal,\n reworkPurposeAndFinancing: ReworkPurposeAndFinancing,\n reworkRegisters: ReworkRegisters,\n },\n \"ReworkData\"\n);\n","import { taskEither } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport * as otpAPI from \"../OTP/domain\";\nimport { GenericError } from \"../globalDomain\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonNegativeInteger, LocalizedString } from \"design-system\";\nimport { ApplicationLimitError } from \"../MortgageDashboard/domain\";\n\nexport const getGenerateOTP = ({\n onStart,\n onEnd,\n onError,\n onFailure,\n onSuccess,\n onGenerateOTP,\n phoneNumber,\n}: {\n onStart: IO;\n onEnd: IO;\n onError: (error: otpAPI.OtpGenerationError | GenericError) => unknown;\n onFailure: IO;\n onSuccess: (\n transactionId: Option,\n remainingOtpRequests: NonNegativeInteger\n ) => unknown;\n phoneNumber: string;\n onGenerateOTP: ReaderTaskEither<\n otpAPI.OtpGenerationInput,\n otpAPI.OtpGenerationError | GenericError | ApplicationLimitError,\n otpAPI.OtpGenerationOutput & { transactionId: Option }\n >;\n}) =>\n pipe(\n taskEither.bracket(\n taskEither.rightIO(onStart),\n () =>\n pipe(\n onGenerateOTP({\n phoneNumber: phoneNumber,\n }),\n taskEither.orElse(error =>\n taskEither.leftIO(() => {\n if (error.id === \"ApplicationLimitPerClientExceeded\") {\n return onFailure();\n }\n return onError(error);\n })\n ),\n taskEither.chainW(({ transactionId, remainingRequests }) =>\n taskEither.fromIO(() => onSuccess(transactionId, remainingRequests))\n )\n ),\n () => taskEither.rightIO(onEnd)\n )\n );\n","import {\n Card,\n FormSection,\n Box,\n Children,\n LocalizedString,\n} from \"design-system\";\n\nimport * as classes from \"./EditSection.treat\";\n\ntype Props = {\n children: Children;\n title: LocalizedString;\n};\n\nexport function EditSection(props: Props) {\n return (\n \n \n \n {props.children}\n \n \n \n );\n}\n","import { option } from \"fp-ts\";\nimport { constFalse, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { MoneyAmount } from \"../../../globalDomain\";\n\nexport const toFalse = (booleanOption: Option) =>\n pipe(booleanOption, option.getOrElse(constFalse));\n\nexport const resolveAmount = (moneyAmount: Option) =>\n pipe(\n moneyAmount,\n option.map(({ amount }) => amount)\n );\n\nexport const checkRequiredFieldsProvided = <\n T extends { [index: string]: Option }\n>(\n values: T,\n requiredFields: { [K in keyof T]: boolean }\n) =>\n Object.entries(values)\n .filter(\n ([field]) =>\n requiredFields.hasOwnProperty(field) &&\n requiredFields[field as keyof typeof requiredFields]\n )\n .map(([_, value]) => value)\n .reduce(\n (result, value: Option) => result && option.isSome(value),\n true\n );\n","import { useEffect } from \"react\";\nimport { usePrevious } from \"react-use\";\nimport {\n ActionButtonGroup,\n Banner,\n Box,\n Button,\n CheckboxField,\n DropdownOption,\n FormRow,\n FormSection,\n InlineMessage,\n Space,\n useForm,\n validators,\n} from \"design-system\";\nimport { boolean, either, option, taskEither } from \"fp-ts\";\nimport {\n constant,\n constFalse,\n constNull,\n constTrue,\n flow,\n pipe,\n} from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { Tenant, foldTenant } from \"../../../globalDomain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { useCommand } from \"../../../useAPI\";\nimport { OptionalEditMoneyField } from \"../../../Common/OptionalEditFields/OptionalEditMoneyField\";\nimport { OptionalEditDropdownField } from \"../../../Common/OptionalEditFields/OptionalEditDropdownField\";\nimport { OptionalEditTextField } from \"../../../Common/OptionalEditFields/OptionalEditTextField\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../Common/selectDropdownOption\";\nimport { useTenantCurrency } from \"../../../Common/useTenantCurrency\";\nimport { useValidators } from \"../../../Common/useValidators\";\nimport { AmountLimit } from \"../../api\";\nimport { Overdraft, ReworkOverdraft } from \"../../domain\";\nimport {\n liabilitiesAmountLimits,\n SelectedApplicant,\n} from \"../../mortgageDashboardUtils\";\nimport { useAppContext } from \"../../../useAppContext\";\nimport { checkRequiredFieldsProvided, resolveAmount, toFalse } from \"./utils\";\nimport * as api from \"./api\";\nimport { LiabilitiesVariant } from \"./Liabilities\";\nimport * as ovdApi from \"../../../PreapprovedOverdraft/ExpensesPage/ExpensesConfirmation/CurrentLiabilitiesDialog/api\";\nimport * as standardLoanApi from \"../../../StandardLoan/ExpensesAndAdditionalIncome/ExpensesConfirmation/CurrentLiabilitiesDialog/api\";\nimport { foldLiabilitiesVariant } from \"../../../StandardLoan/domain\";\nimport { useFormatReworkData } from \"../../useFormatReworkData\";\n\ntype Props = {\n selectedApplicant: SelectedApplicant;\n initialValues: Option;\n onSave: (loan: Overdraft) => unknown;\n onCancel: () => unknown;\n onEdit: () => unknown;\n onRemove: () => unknown;\n isACPhase: boolean;\n isInteractingWithAnyForm: boolean;\n isViewMode: boolean;\n providersList: DropdownOption[];\n amountLimits: {\n [key in \"ccAndOvdCurrentBalance\" | \"ccAndOvdLimit\"]: AmountLimit;\n };\n edit: boolean;\n variant: LiabilitiesVariant;\n reworkOverdraft: Option;\n};\n\ntype FormState = {\n currentBalance: Option;\n overdraftLimit: Option;\n repaidBeforeDisbursement: Option;\n changeLimit: Option;\n provider: Option;\n contractNumber: Option;\n newOverdraftLimit: Option;\n};\n\ntype FormSetup = {\n tenant: Tenant;\n isACPhase: boolean;\n edit: boolean;\n manuallyAdded: boolean;\n};\n\nfunction formStateFromInitialValues(\n initialValues: Option\n): FormState {\n return pipe(\n initialValues,\n option.fold(\n () => ({\n currentBalance: option.none,\n overdraftLimit: option.none,\n repaidBeforeDisbursement: option.none,\n changeLimit: option.none,\n provider: option.none,\n contractNumber: option.none,\n newOverdraftLimit: option.none,\n }),\n values => ({\n currentBalance: resolveAmount(values.currentBalance),\n overdraftLimit: resolveAmount(values.overdraftLimit),\n repaidBeforeDisbursement: values.repaidBeforeDisbursement,\n changeLimit: values.changeLimit,\n provider: values.provider,\n contractNumber: values.contractNumber,\n newOverdraftLimit: resolveAmount(values.newOverdraftLimit),\n })\n )\n );\n}\n\nconst getChangeLimitDisbursementConflict = (values: FormState) =>\n toFalse(values.changeLimit) && toFalse(values.repaidBeforeDisbursement);\n\nconst getDisplayedFields = (\n values: FormState,\n formSetup: FormSetup,\n variant: LiabilitiesVariant\n): { [K in keyof FormState]: boolean } => ({\n currentBalance: true,\n overdraftLimit: true,\n repaidBeforeDisbursement: foldLiabilitiesVariant(variant, {\n onMtg: constTrue,\n onCf: constFalse,\n onOvd: constFalse,\n }),\n changeLimit: foldLiabilitiesVariant(variant, {\n onMtg: () => formSetup.tenant === \"CZ\",\n onCf: constFalse,\n onOvd: constFalse,\n }),\n provider:\n !getChangeLimitDisbursementConflict(values) &&\n (formSetup.edit || option.isSome(values.provider)) &&\n (toFalse(values.changeLimit) || toFalse(values.repaidBeforeDisbursement)),\n contractNumber:\n !getChangeLimitDisbursementConflict(values) &&\n formSetup.tenant === \"CZ\" &&\n (toFalse(values.changeLimit) || toFalse(values.repaidBeforeDisbursement)),\n newOverdraftLimit:\n !getChangeLimitDisbursementConflict(values) &&\n formSetup.tenant === \"CZ\" &&\n toFalse(values.changeLimit),\n});\n\nconst getRequiredFields = (\n values: FormState,\n formSetup: FormSetup,\n variant: LiabilitiesVariant\n): { [K in keyof FormState]: boolean } => ({\n ...getDisplayedFields(values, formSetup, variant),\n ...(!formSetup.isACPhase\n ? {\n provider: false,\n contractNumber: false,\n }\n : {}),\n});\n\nexport function OverdraftForm(props: Props) {\n const formatMessage = useFormatMessage();\n const {\n apiParameters: { tenant },\n config: { r8EnableSimpleRefinancing },\n } = useAppContext();\n const {\n defined,\n definedNoExtract,\n nonNegativeNumber,\n amountMinMax,\n maxLength,\n amountMinMaxWithNegative,\n } = useValidators();\n const currency = useTenantCurrency();\n\n const addOverdraft = useCommand(api.addOverdraft);\n const editOverdraft = useCommand(api.editOverdraft);\n const addOverdraftStandardLoan = useCommand(standardLoanApi.addOverdraft);\n const addOverdraftOverdraft = useCommand(ovdApi.addOverdraft);\n const editOverdraftStandardLoan = useCommand(standardLoanApi.editOverdraft);\n const editOverdraftOverdraft = useCommand(ovdApi.editOverdraft);\n\n const {\n formatIssues: formatOverdraftIssues,\n formatFeedback: formatOverdraftFeedback,\n } = useFormatReworkData(props.reworkOverdraft);\n\n const currentBalance = pipe(\n props.initialValues,\n option.fold(\n () => option.none,\n a => a.currentBalance\n )\n );\n const overDraftLimit = pipe(\n props.initialValues,\n option.fold(\n () => option.none,\n a => a.overdraftLimit\n )\n );\n\n useEffect(() => {\n if (\n (r8EnableSimpleRefinancing && !option.isSome(currentBalance)) ||\n !option.isSome(overDraftLimit)\n ) {\n props.onEdit();\n }\n }, [currentBalance, overDraftLimit]);\n\n const formSetup = pipe(\n props.initialValues,\n option.fold(\n (): FormSetup => ({\n tenant,\n edit: props.edit,\n isACPhase: props.isACPhase,\n manuallyAdded: true,\n }),\n values => ({\n tenant,\n edit: props.edit,\n isACPhase: props.isACPhase,\n manuallyAdded: values.manuallyAdded,\n })\n )\n );\n\n const { fieldProps, handleSubmit, setValues, values } = useForm(\n {\n initialValues: formStateFromInitialValues(props.initialValues),\n fieldValidators: function (values) {\n const requiredFields = getRequiredFields(\n values,\n formSetup,\n props.variant\n );\n return {\n provider: requiredFields.provider ? definedNoExtract() : undefined,\n currentBalance: validators.inSequence(\n defined(),\n nonNegativeNumber,\n amountMinMax(\n props.amountLimits.ccAndOvdCurrentBalance.min,\n props.amountLimits.ccAndOvdCurrentBalance.max\n )\n ),\n overdraftLimit: validators.inSequence(\n defined(),\n nonNegativeNumber,\n amountMinMax(\n props.amountLimits.ccAndOvdLimit.min,\n props.amountLimits.ccAndOvdLimit.max\n )\n ),\n repaidBeforeDisbursement: requiredFields.repaidBeforeDisbursement\n ? definedNoExtract()\n : undefined,\n changeLimit: requiredFields.repaidBeforeDisbursement\n ? validators.inSequence(\n definedNoExtract(),\n validators.fromPredicate(\n () => !getChangeLimitDisbursementConflict(values),\n formatMessage(\n \"Mortgage.CBResults.Liabilities.overdraftChangeLimitError\"\n )\n )\n )\n : undefined,\n newOverdraftLimit: requiredFields.newOverdraftLimit\n ? validators.inSequence(\n defined(),\n amountMinMaxWithNegative(\n liabilitiesAmountLimits.min,\n liabilitiesAmountLimits.max\n ),\n validators.validator(flow(option.some, either.right))\n )\n : undefined,\n contractNumber: requiredFields.contractNumber\n ? validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(maxLength(200))\n )\n : validators.validateIfDefined(maxLength(200)),\n };\n },\n },\n {\n onSubmit: values =>\n pipe(\n {\n applicantIndex: props.selectedApplicant.index,\n currentBalance: { currency, amount: values.currentBalance },\n overdraftLimit: { currency, amount: values.overdraftLimit },\n repaidBeforeDisbursement: values.repaidBeforeDisbursement,\n changeLimit: values.changeLimit,\n provider: values.provider,\n contractNumber: values.contractNumber,\n newOverdraftLimit: pipe(\n values.newOverdraftLimit,\n option.map(amount => ({ currency, amount }))\n ),\n },\n taskEither.of,\n taskEither.chain(newValues =>\n pipe(\n props.initialValues,\n option.fold(\n () =>\n pipe(\n foldLiabilitiesVariant(props.variant, {\n onMtg: () =>\n addOverdraft({ ...newValues, manuallyAdded: true }),\n onCf: () =>\n addOverdraftStandardLoan({\n currentBalance: newValues.currentBalance,\n overdraftLimit: newValues.overdraftLimit,\n }),\n onOvd: () =>\n addOverdraftOverdraft({\n currentBalance: newValues.currentBalance,\n overdraftLimit: newValues.overdraftLimit,\n }),\n }),\n taskEither.chain(overdraft =>\n taskEither.fromIO(() => props.onSave(overdraft))\n )\n ),\n initialValues =>\n pipe(\n foldLiabilitiesVariant(props.variant, {\n onMtg: () =>\n editOverdraft({\n ...newValues,\n manuallyAdded: formSetup.manuallyAdded,\n recordId: initialValues.recordId,\n }),\n onCf: () =>\n editOverdraftStandardLoan({\n currentBalance: newValues.currentBalance,\n overdraftLimit: newValues.overdraftLimit,\n recordId: initialValues.recordId,\n }),\n onOvd: () =>\n editOverdraftOverdraft({\n currentBalance: newValues.currentBalance,\n overdraftLimit: newValues.overdraftLimit,\n recordId: initialValues.recordId,\n }),\n }),\n taskEither.chain(overdraft =>\n taskEither.fromIO(() => props.onSave(overdraft))\n )\n )\n )\n )\n )\n ),\n }\n );\n\n const previousEdit = usePrevious(formSetup.edit);\n useEffect(() => {\n if (!formSetup.edit || formSetup.edit === previousEdit) return;\n\n setValues({\n repaidBeforeDisbursement: pipe(\n values.repaidBeforeDisbursement,\n toFalse,\n option.some\n ),\n changeLimit: pipe(values.changeLimit, toFalse, option.some),\n });\n }, [formSetup, previousEdit, values, setValues]);\n\n const handleCancel = () => {\n pipe(props.initialValues, formStateFromInitialValues, setValues);\n props.onCancel();\n };\n\n const providerFieldProps = fieldProps(\"provider\");\n const providerOnChange = (value: Option>) => {\n providerFieldProps.onChange(dropdownOptionToValue(value));\n };\n\n const displayedFields = getDisplayedFields(values, formSetup, props.variant);\n\n const displayProductIsUsed = () => {\n if (props.variant === \"OVD\" && r8EnableSimpleRefinancing) {\n return <>;\n }\n\n if (\n r8EnableSimpleRefinancing &&\n toFalse(\n pipe(\n props.initialValues,\n option.chain(i => i.includedInBonita)\n )\n )\n ) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n };\n\n const removeUCBProviderCode = (\n providersList: DropdownOption[],\n manuallyAdded: boolean\n ) => {\n return !manuallyAdded\n ? providersList\n : providersList.filter(\n provider =>\n provider.value !=\n foldTenant(\n tenant,\n () => \"1111\",\n () => \"2700\"\n )\n );\n };\n\n return (\n \n {(displayedFields.currentBalance || displayedFields.overdraftLimit) && (\n \n {displayedFields.currentBalance ? (\n \n ) : null}\n {displayedFields.overdraftLimit ? (\n \n ) : null}\n \n )}\n\n {displayedFields.repaidBeforeDisbursement && formSetup.edit && (\n \n \n pipe(\n newValue,\n option.some,\n fieldProps(\"repaidBeforeDisbursement\").onChange\n )\n }\n issues={formatOverdraftIssues(\n \"repaidBeforeDisbursement\",\n fieldProps(\"repaidBeforeDisbursement\").issues\n )}\n />\n \n )}\n\n {displayedFields.changeLimit && formSetup.edit && (\n \n \n pipe(newValue, option.some, fieldProps(\"changeLimit\").onChange)\n }\n />\n \n )}\n\n {getChangeLimitDisbursementConflict(values) && (\n \n )}\n\n {(displayedFields.provider || displayedFields.contractNumber) && (\n \n {displayedFields.provider ? (\n \n ) : null}\n\n {displayedFields.contractNumber ? (\n \n pipe(\n value,\n option.fromPredicate(value => value.length > 0),\n fieldProps(\"contractNumber\").onChange\n )\n }\n label={formatMessage(\n !formSetup.isACPhase && formSetup.edit\n ? \"Mortgage.CBResults.Liabilities.contractNumberOptional\"\n : \"Mortgage.CBResults.Liabilities.contractNumber\"\n )}\n placeholder={formatMessage(\n \"Mortgage.CBResults.Liabilities.contractNumber\"\n )}\n edit={formSetup.edit}\n issues={formatOverdraftIssues(\n \"contractNumber\",\n fieldProps(\"contractNumber\").issues\n )}\n feedback={formatOverdraftFeedback(\"contractNumber\")}\n />\n ) : null}\n \n )}\n\n {displayedFields.newOverdraftLimit && (\n \n \n {null}\n \n )}\n\n {!formSetup.edit && toFalse(values.changeLimit) && (\n \n )}\n {!formSetup.edit && toFalse(values.repaidBeforeDisbursement) && (\n \n )}\n\n {!formSetup.edit &&\n toFalse(\n pipe(\n props.initialValues,\n option.chain(i => i.usedForRefinance)\n )\n ) &&\n props.variant !== \"OVD\" ? (\n \n ) : null}\n\n {displayProductIsUsed()}\n\n {formSetup.isACPhase &&\n !formSetup.edit &&\n !checkRequiredFieldsProvided(\n values,\n getRequiredFields(values, formSetup, props.variant)\n ) && (\n \n )}\n\n {formSetup.edit ? (\n ({\n normal: formatMessage(\"Liabilities.Add\"),\n loading: formatMessage(\"Liabilities.Add\"),\n error: formatMessage(\"Liabilities.Add\"),\n success: formatMessage(\"Liabilities.Add\"),\n }),\n () => ({\n normal: formatMessage(\"Save\"),\n loading: formatMessage(\"Save\"),\n error: formatMessage(\"Save\"),\n success: formatMessage(\"Save\"),\n })\n )\n ),\n disabled: false,\n variant: \"loading\",\n type: \"submit\",\n }, // as Action\n ]}\n />\n ) : (\n \n \n\n {formSetup.manuallyAdded && !props.isViewMode && (\n \n )}\n \n {foldLiabilitiesVariant(props.variant, {\n onCf: () =>\n formSetup.manuallyAdded ? (\n \n ) : null,\n onOvd: () =>\n formSetup.manuallyAdded ? (\n \n ) : null,\n onMtg: () =>\n pipe(\n props.isViewMode,\n boolean.fold(\n () => (\n \n ),\n constNull\n )\n ),\n })}\n \n )}\n \n );\n}\n","import {\n FileContent,\n LocalizedString,\n NonNegativeInteger,\n PositiveInteger,\n} from \"design-system\";\nimport { eq, option } from \"fp-ts\";\nimport { constFalse, constTrue } from \"fp-ts/function\";\nimport { Semigroup } from \"fp-ts/Semigroup\";\nimport * as t from \"io-ts\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { optionFromNullable } from \"io-ts-types/lib/optionFromNullable\";\nimport { withFallback } from \"io-ts-types/lib/withFallback\";\nimport { apiCall } from \"../APICall\";\nimport {\n eqWithCoApplicant,\n GenericError,\n MaritalStatus,\n MoneyAmount,\n optionFromUndefined,\n withCoApplicant,\n} from \"../globalDomain\";\nimport { TermsAndConditionsOutput } from \"../Common/PreContractualDocuments/api\";\nimport {\n CheckExistingClientInput,\n CheckExistingClientOutput,\n eqCheckExistingClientInput,\n} from \"../IdUpload/ClientData/api\";\nimport { KYCAnswers, KYCAnswers2 } from \"../KYC/domain\";\nimport {\n eqOtpGenerationInput,\n eqOtpVerifyInput,\n OtpGenerationError,\n OtpGenerationInput,\n OtpGenerationOutput,\n OtpVerifyInput,\n} from \"../OTP/domain\";\nimport {\n AdditionalIncome,\n BusinessSector,\n DeleteAdditionalIncome,\n FreelancerType,\n GetIncome,\n IncomeFull,\n JobPosition,\n SaveIncome,\n ThirdParty,\n} from \"./Bonita/Income/domain\";\nimport {\n AdditionalDetails,\n ApplicantDetailsConfig,\n ApplicantProfile,\n ApplicantRegistersData,\n ApplicantsRecordC,\n ApplicationLimitError,\n ApplicationList,\n ApplicationStatus,\n AssignedUser,\n BankersList,\n BonitaApplicantState,\n BonitaError,\n BonitaResults,\n BranchesList,\n ClientProfileError,\n CPIAnswers,\n CPIData,\n CreditBureauStatus,\n eqWithApplicantIndex,\n Expenses,\n FinalDecisionStatus,\n HouseholdInfo,\n LoanList,\n MTG3POtpVerifyError,\n MTGSubmitApplicationError,\n OfferError,\n OfferWarning,\n PreliminaryDecisionStatus,\n PropertyAndAppraisalDetailsResponse,\n StatusColor,\n TotalLiabilitiesInput,\n UserType,\n withApplicantIndex,\n ReworkActions,\n ReworkData,\n AssignedBrokerForBanker,\n} from \"./domain\";\nimport { Eq } from \"fp-ts/Eq\";\nimport {\n eqLinkGenerationInput,\n LinkGenerationError,\n LinkGenerationInput,\n LinkGenerationOutput,\n eqOtpGenerationInput as eqOtpGenerationInputBase,\n OtpGenerationError as OtpGenerationErrorBase,\n OtpGenerationInput as OtpGenerationInputBase,\n OTPGenerationOutput as OTPGenerationOutputBase,\n OtpVerifyError as OtpVerifyErrorBase,\n OtpVerifyInput as OtpVerifyInputBase,\n} from \"../PhoneAndEmailVerification/api\";\n\nconst NewApplicationInput = t.type({\n name: NonEmptyString,\n surname: NonEmptyString,\n phoneNumber: NonEmptyString,\n});\n\nconst eqNewApplicationInput = eq.getStructEq({\n name: eq.eqString,\n surname: eq.eqString,\n phoneNumber: eq.eqString,\n});\n\nexport const NewApplicationOutput = t.type({\n applicationId: t.string,\n});\n\nexport const createNewApplication = apiCall({\n inputCodec: NewApplicationInput,\n inputEq: eqNewApplicationInput,\n outputCodec: NewApplicationOutput,\n path: [\"packages\", \"mortgage\", \"application\", \"createNew\"],\n});\n\nexport const createNewExistingClient = apiCall({\n inputCodec: NewApplicationInput,\n inputEq: eqNewApplicationInput,\n outputCodec: NewApplicationOutput,\n path: [\"packages\", \"mortgage\", \"application\", \"createNewExistingClient\"],\n});\n\nexport const AddCoapplicantInput = t.type({\n name: NonEmptyString,\n surname: NonEmptyString,\n coapplicantLabel: LocalizedString,\n});\n\nexport const addCoapplicant = apiCall({\n path: [\"packages\", \"mortgage\", \"application\", \"addCoapplicant\"],\n inputCodec: AddCoapplicantInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.type({\n applicantIndex: PositiveInteger,\n }),\n});\n\nexport const renounce = apiCall({\n path: [\"packages\", \"mortgage\", \"application\", \"renounce\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const removeApplication = apiCall({\n path: [\"packages\", \"mortgage\", \"application\", \"cancel\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst RemoveCoapplicantInput = t.type({\n coapplicantIndex: t.string,\n});\n\nexport const removeCoapplicant = apiCall({\n path: [\"packages\", \"mortgage\", \"removeCoapplicant\"],\n inputCodec: RemoveCoapplicantInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst CancelIdUploadInput = t.type({\n applicantIndex: t.string,\n});\n\nexport const cancelIdUpload = apiCall({\n path: [\"packages\", \"mortgage\", \"client\", \"cancelIdUpload\"],\n inputCodec: CancelIdUploadInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const JobPositionsOutput = t.array(JobPosition);\nexport const jobPositions = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"jobPositions\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: JobPositionsOutput,\n});\n\nexport const FreelancerTypesOutput = t.array(FreelancerType);\n\nexport const FreelancerTypes = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"freelancerTypes\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: FreelancerTypesOutput,\n});\n\nexport const CurrenciesOutput = t.array(t.string);\nexport const currencies = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"currencies\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CurrenciesOutput,\n});\n\nexport const ThirdPartiesOutput = t.array(ThirdParty);\nexport const thirdParties = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"thirdParty\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ThirdPartiesOutput,\n});\n\nexport const DataForClientWithoutIcoOutput = t.type(\n {\n phone: optionFromUndefined(t.string),\n country: optionFromUndefined(t.string),\n city: optionFromUndefined(t.string),\n street: optionFromUndefined(t.string),\n houseNumber: optionFromUndefined(t.string),\n zipCode: optionFromUndefined(t.string),\n },\n \"DataForClientWithoutIcoOutput\"\n);\nexport const dataForClientWithoutIco = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"dataForClientWithoutIco\"],\n inputCodec: withApplicantIndex(t.unknown),\n inputEq: eq.fromEquals(constTrue),\n outputCodec: DataForClientWithoutIcoOutput,\n});\n\nexport const CheckStatus = t.keyof({\n ToDo: true,\n InProgress: true,\n Complete: true,\n Warning: true,\n Error: true,\n InvalidError: true,\n Timeout: true,\n});\n\nexport type CheckStatus = t.TypeOf;\n\nexport const semigroupCheckStatus: Semigroup = {\n concat: (a, b) => (a === \"Complete\" ? (b === \"Complete\" ? a : b) : a),\n};\n\nconst BusinessSectorsOutput = t.array(BusinessSector);\n\nexport const businessSectors = apiCall({\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"businessSectors\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: BusinessSectorsOutput,\n});\n\nconst BonitaStatus = t.union([CheckStatus, t.literal(\"EvaluateInProgress\")]);\nexport type BonitaStatus = t.TypeOf;\n\nexport const ClientIdCheckStatus = t.union([\n CheckStatus,\n t.literal(\"InvalidIdError\"),\n]);\nexport type ClientIdCheckStatus = t.TypeOf;\n\nexport const ClientProfilePermissions = ApplicantsRecordC(\n t.type({\n applicantIndex: t.string,\n canEditEmail: t.boolean,\n })\n);\n\nexport type ClientProfilePermissions = t.TypeOf<\n typeof ClientProfilePermissions\n>;\n\nconst basicApplicationChecks = {\n clientProfile: t.type(\n {\n contacts: CheckStatus,\n clientId: ClientIdCheckStatus,\n errors: optionFromUndefined(ClientProfileError),\n permissions: ClientProfilePermissions,\n },\n \"ClientProfile\"\n ),\n offer: t.type(\n {\n offer: CheckStatus,\n errorType: optionFromUndefined(OfferError),\n warningType: optionFromUndefined(OfferWarning),\n showSimpleRefinancing: t.boolean,\n },\n \"Offer\"\n ),\n bonita: t.type(\n {\n bonita: BonitaStatus,\n simplifiedBonita: optionFromUndefined(BonitaStatus),\n errorType: optionFromUndefined(BonitaError),\n },\n \"Bonita\"\n ),\n registers: t.type(\n {\n registers: CheckStatus,\n refinancingLoan: optionFromUndefined(CheckStatus),\n existingApplications: optionFromUndefined(CheckStatus),\n mandatoryFields: optionFromUndefined(CheckStatus),\n isNotSentToLf: optionFromUndefined(t.boolean),\n },\n \"Registers\"\n ),\n additionalDetails: t.type(\n {\n cpiQuestions: optionFromUndefined(CheckStatus),\n additionalDetails: CheckStatus,\n legalData: optionFromUndefined(CheckStatus),\n healthQuestionnaire: optionFromUndefined(CheckStatus),\n },\n \"AdditionalDetails\"\n ),\n isApplicationLocked: t.boolean,\n controlCheck: t.boolean,\n canSubmitApplication: optionFromUndefined(t.boolean),\n reworkCategoryQuestion: t.boolean,\n};\n\nexport const DipApplicationChecks = t.strict({\n applicationPhase: t.literal(\"DIP\"),\n ...basicApplicationChecks,\n});\n\nexport const PostDipApplicationChecks = t.strict({\n ...basicApplicationChecks,\n applicationPhase: t.keyof({\n AC: true,\n PD: true,\n FD: true,\n REWORK: true,\n CHANGE_PROCESS: true,\n }),\n purposeStatus: t.type({\n status: CheckStatus,\n }),\n propertyAndAppraisal: t.type({\n property: CheckStatus,\n appraisal: CheckStatus,\n valueOfProperty: CheckStatus,\n }),\n documents: t.type({\n status: CheckStatus,\n }),\n});\n\nexport type DipApplicationChecks = t.TypeOf;\nexport type PostDipApplicationChecks = t.TypeOf<\n typeof PostDipApplicationChecks\n>;\n\nconst ApplicationChecksOutput = t.union([\n DipApplicationChecks,\n PostDipApplicationChecks,\n]);\n\nexport type ApplicationChecksOutput = t.TypeOf;\n\nexport type ApplicationPhase = ApplicationChecksOutput[\"applicationPhase\"];\n\nexport const applicationChecks = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"application\", \"checks\"],\n outputCodec: ApplicationChecksOutput,\n});\n\nexport const saveApplication = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"application\", \"save\"],\n});\n\nexport const submitApplication = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"application\", \"submit\"],\n errorCodec: MTGSubmitApplicationError,\n});\n\nconst ApplicationStatusOutput = t.union(\n [\n t.type({\n responseStatus: t.literal(\"NOT_SUBMITTED\"),\n }),\n t.type({\n responseStatus: t.literal(\"NOT_RECEIVED\"),\n }),\n t.type({\n responseStatus: t.literal(\"RECEIVED\"),\n applicationStatus: ApplicationStatus,\n overLimitDecisionReasons: optionFromUndefined(t.array(LocalizedString)),\n }),\n ],\n \"ApplicationStatus\"\n);\n\nexport type ApplicationStatusOutput = t.TypeOf;\n\nexport const applicationStatus = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"application\", \"status\"],\n outputCodec: ApplicationStatusOutput,\n});\n\nexport const proceedWithAcDashboard = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"application\", \"proceedWithAcDashboard\"],\n outputCodec: t.null,\n});\n\nconst ClientProfileOutput = ApplicantsRecordC(ApplicantProfile);\n\nexport type ClientProfileOutput = t.TypeOf;\n\nexport const clientProfile = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"client\", \"profile\"],\n outputCodec: ClientProfileOutput,\n});\n\nexport const openClient = apiCall({\n inputCodec: withApplicantIndex(t.unknown),\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"client\", \"openClient\"],\n});\n\nexport const existingClient = apiCall({\n inputCodec: withApplicantIndex(t.unknown),\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"client\", \"existingClient\"],\n});\n\nconst ProceedWithRegistersOutput = t.type(\n {\n completedOffer: t.boolean,\n mainApplicantInitiatedCB: t.boolean,\n applicantsRegistersData: ApplicantsRecordC(ApplicantRegistersData),\n selectedOfferLoanAmount: optionFromUndefined(MoneyAmount),\n },\n \"ProceedWithRegisters\"\n);\n\nexport type ProceedWithRegistersOutput = t.TypeOf<\n typeof ProceedWithRegistersOutput\n>;\n\nexport const proceedWithRegisters = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"proceedWithRegisters\"],\n outputCodec: ProceedWithRegistersOutput,\n});\n\nexport const RegistersMemorandumInput = withApplicantIndex(\n t.type({\n firstOptionCBConsent: t.boolean,\n secondOptionCBConsent: t.boolean,\n })\n);\n\nexport type RegistersMemorandumInput = t.TypeOf<\n typeof RegistersMemorandumInput\n>;\n\nconst eqRegistersMemorandumInput = eqWithApplicantIndex(\n eq.getStructEq({\n firstOptionCBConsent: eq.eqBoolean,\n secondOptionCBConsent: eq.eqBoolean,\n })\n);\n\nexport const registersMemorandum = apiCall({\n inputEq: eqRegistersMemorandumInput,\n inputCodec: RegistersMemorandumInput,\n outputCodec: t.unknown,\n path: [\"packages\", \"mortgage\", \"registers\", \"memorandum\"],\n});\n\nconst RegistersOtpGenerationInput = withCoApplicant(OtpGenerationInput);\n\nexport type RegistersOtpGenerationInput = t.TypeOf<\n typeof RegistersOtpGenerationInput\n>;\n\nconst eqRegistersOtpGenerationInput = eqWithCoApplicant(eqOtpGenerationInput);\n\nexport const RegistersOtpGenerationError = t.union([\n OtpGenerationError,\n ApplicationLimitError,\n GenericError,\n]);\n\nexport type RegistersOtpGenerationError = t.TypeOf<\n typeof RegistersOtpGenerationError\n>;\n\nexport const registersOtpGeneration = apiCall({\n inputEq: eqRegistersOtpGenerationInput,\n inputCodec: RegistersOtpGenerationInput,\n outputCodec: OtpGenerationOutput,\n path: [\"packages\", \"mortgage\", \"registers\", \"otp\"],\n errorCodec: RegistersOtpGenerationError,\n});\n\nconst RegistersOtpVerifyInput = withCoApplicant(OtpVerifyInput);\n\nexport type RegistersOtpVerifyInput = t.TypeOf;\n\nconst eqRegistersOtpVerifyInput = eqWithCoApplicant(eqOtpVerifyInput);\n\nexport const registersOtpVerify = apiCall({\n inputEq: eqRegistersOtpVerifyInput,\n inputCodec: RegistersOtpVerifyInput,\n path: [\"packages\", \"mortgage\", \"registers\", \"otp\", \"verify\"],\n errorCodec: MTG3POtpVerifyError,\n});\n\nconst RegisterStatus = t.type(\n {\n registers: CheckStatus,\n existingApplications: optionFromUndefined(CheckStatus),\n },\n \"RegisterStatus\"\n);\n\nexport type RegisterStatus = t.TypeOf;\n\nconst RegisterStatusOutput = ApplicantsRecordC(RegisterStatus);\n\nexport type RegisterStatusOutput = t.TypeOf;\n\nexport const registerStatus = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"creditBureau\", \"registerStatus\"],\n outputCodec: RegisterStatusOutput,\n});\n\nconst AmountLimit = t.type({ min: t.number, max: t.number });\nexport type AmountLimit = t.TypeOf;\n\nconst baseCreditBureauResult = {\n internalInfoStatus: CreditBureauStatus,\n loanList: optionFromUndefined(LoanList),\n mtgAndClApprovedLoanAmountLimit: AmountLimit,\n mtgAndClCurrentBalanceLimit: AmountLimit,\n mtgAndClMonthlyInstallmentLimit: AmountLimit,\n ccAndOvdCurrentBalanceLimit: AmountLimit,\n ccAndOvdLimit: AmountLimit,\n applicationList: optionFromUndefined(ApplicationList),\n};\n\nexport const CreditBureauResultsSK = t.type(\n {\n ...baseCreditBureauResult,\n srbiStatus: CreditBureauStatus,\n nrkiStatus: CreditBureauStatus,\n otherStatus: CreditBureauStatus,\n socialInsurance: StatusColor,\n },\n \"CreditBureauResultsSK\"\n);\nexport type CreditBureauResultsSK = t.TypeOf;\n\nexport const CreditBureauResultsCZ = t.type(\n {\n ...baseCreditBureauResult,\n crifStatus: CreditBureauStatus,\n solusStatus: CreditBureauStatus,\n insolvencyRegisterStatus: CreditBureauStatus,\n },\n \"CreditBureauResultsCZ\"\n);\nexport type CreditBureauResultsCZ = t.TypeOf;\n\nexport const CreditBureauResults = t.union(\n [CreditBureauResultsCZ, CreditBureauResultsSK],\n \"CreditBureauResults\"\n);\n\nexport type CreditBureauResults = t.TypeOf;\n\nconst CreditBureauResultsOutPut = ApplicantsRecordC(\n optionFromUndefined(CreditBureauResults),\n option.none\n);\nexport type CreditBureauResultsOutPut = t.TypeOf<\n typeof CreditBureauResultsOutPut\n>;\n\nexport const creditBureauResults = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"creditBureau\", \"results\"],\n outputCodec: CreditBureauResultsOutPut,\n});\n\nconst ProceedWithBonitaOutput = t.type({\n hasSelectedOffer: t.boolean,\n applicationPhase: t.keyof({\n DIP: true,\n AC: true,\n PD: true,\n FD: true,\n REWORK: true,\n CHANGE_PROCESS: true,\n }),\n bonitaData: ApplicantsRecordC(BonitaApplicantState),\n});\n\nexport const proceedWithBonita = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"bonita\", \"proceed\"],\n outputCodec: ProceedWithBonitaOutput,\n});\n\nconst GetBonitaOutput = t.type(\n {\n bonitaEvaluate: optionFromUndefined(BonitaResults, \"Evaluate\"),\n income: ApplicantsRecordC(\n optionFromUndefined(GetIncome, \"Income\"),\n option.none\n ),\n expenses: ApplicantsRecordC(\n optionFromUndefined(Expenses, \"Expenses\"),\n option.none\n ),\n },\n \"GetBonitaOutput\"\n);\n\nexport type GetBonitaOutput = t.TypeOf;\n\nexport const getBonita = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"bonita\", \"get\"],\n outputCodec: GetBonitaOutput,\n});\n\nexport const saveBonitaIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(SaveIncome),\n path: [\"packages\", \"mortgage\", \"bonita\", \"income\", \"save\"],\n outputCodec: t.unknown,\n});\n\nexport const editMainIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(IncomeFull),\n path: [\"packages\", \"mortgage\", \"bonita\", \"mainIncome\", \"edit\"],\n outputCodec: t.unknown,\n});\n\nexport const addAdditionalIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(IncomeFull),\n path: [\"packages\", \"mortgage\", \"bonita\", \"additionalIncome\", \"add\"],\n outputCodec: t.unknown,\n});\n\nexport const editAdditionalIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(AdditionalIncome),\n path: [\"packages\", \"mortgage\", \"bonita\", \"additionalIncome\", \"edit\"],\n outputCodec: t.unknown,\n});\n\nexport const deleteAdditionalIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(DeleteAdditionalIncome),\n path: [\"packages\", \"mortgage\", \"bonita\", \"additionalIncome\", \"delete\"],\n outputCodec: t.unknown,\n});\n\nexport const saveBonitaExpenses = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(Expenses),\n path: [\"packages\", \"mortgage\", \"bonita\", \"expenses\", \"save\"],\n outputCodec: t.unknown,\n});\n\nexport const getTotalLiabilities = apiCall({\n inputEq: eq.fromEquals(constTrue),\n inputCodec: withApplicantIndex(TotalLiabilitiesInput),\n path: [\"packages\", \"mortgage\", \"bonita\", \"expenses\", \"totalLiabilities\"],\n outputCodec: MoneyAmount,\n});\n\nconst MinimumMonthlyExpenses = t.type(\n {\n minimumMonthlyExpenses: MoneyAmount,\n },\n \"MinimumMonthlyExpenses\"\n);\n\nexport type MinimumMonthlyExpenses = t.TypeOf;\n\nexport const minimumMonthlyExpenses = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: withApplicantIndex(HouseholdInfo),\n path: [\"packages\", \"mortgage\", \"bonita\", \"minimumMonthlyExpenses\"],\n outputCodec: ApplicantsRecordC(MinimumMonthlyExpenses),\n});\n\nexport const evaluateBonita = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"bonita\", \"evaluate\"],\n outputCodec: t.unknown,\n});\n\nconst OutputBonitaResults = optionFromUndefined(BonitaResults);\n\nexport const bonitaResults = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"bonita\", \"results\"],\n outputCodec: OutputBonitaResults,\n});\n\nexport const viewPropertyAndAppraisalDetails = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"mortgage\", \"property\", \"view\"],\n outputCodec: PropertyAndAppraisalDetailsResponse,\n});\n\nconst SaveAdditionalDetailsInput = withApplicantIndex(AdditionalDetails);\nexport type SaveAdditionalDetailsInput = t.TypeOf<\n typeof SaveAdditionalDetailsInput\n>;\n\nexport const saveAdditionalDetails = apiCall({\n inputCodec: SaveAdditionalDetailsInput,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"saveDetails\"],\n outputCodec: t.unknown,\n});\n\nconst GetAdditionalDetailsOutput = ApplicantsRecordC(\n optionFromUndefined(AdditionalDetails),\n option.none\n);\nexport type GetAdditionalDetailsOutput = t.TypeOf<\n typeof GetAdditionalDetailsOutput\n>;\n\nexport const getAdditionalDetails = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"getDetails\"],\n outputCodec: GetAdditionalDetailsOutput,\n});\n\nconst SubmitLegalDataInput = t.type({\n legalData: t.type({\n applicantIndex: NonNegativeInteger,\n answers: KYCAnswers,\n }),\n});\n\nexport const submitLegalData = apiCall({\n inputCodec: SubmitLegalDataInput,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"legaldata\", \"submit\"],\n outputCodec: t.unknown,\n});\n\nconst GetLegalDataOutput = t.type(\n {\n applicantIndex: t.string,\n answers: KYCAnswers,\n },\n \"GetLegalDataOutput\"\n);\n\nexport type GetLegalData = t.TypeOf;\n\nexport const getLegalData = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"getLegalData\"],\n outputCodec: withFallback(\n optionFromUndefined(ApplicantsRecordC(GetLegalDataOutput)),\n option.none\n ),\n});\n\nconst GetLegalDataOutput2 = t.type(\n {\n applicantIndex: t.string,\n answers: KYCAnswers2,\n },\n \"GetLegalDataOutput2\"\n);\n\nexport type GetLegalData2 = t.TypeOf;\n\nexport const getLegalData2 = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"getLegalData\"],\n outputCodec: withFallback(\n optionFromUndefined(ApplicantsRecordC(GetLegalDataOutput2)),\n option.none\n ),\n});\n\nconst ProceedWithLegalDataOutput = t.type({\n hasLegalDataCompleted: t.boolean,\n legalDataRequired: t.boolean,\n computeBonitaBefore: t.boolean,\n secondCitizenshipRequired: t.boolean,\n incomeSource: optionFromUndefined(t.string),\n});\n\nexport type ProceedWithLegalData = t.TypeOf;\n\nexport const proceedWithLegalData = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"mortgage\",\n \"additionaldetails\",\n \"legaldata\",\n \"proceedWithLegalData\",\n ],\n outputCodec: ApplicantsRecordC(ProceedWithLegalDataOutput),\n});\n\nconst SaveCPIAnswersInput = withApplicantIndex(CPIAnswers);\nexport type SaveCPIAnswersInput = t.TypeOf;\n\nexport const saveCPIAnswers = apiCall({\n inputCodec: SaveCPIAnswersInput,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"saveCPI\"],\n outputCodec: t.unknown,\n});\n\nconst GetCPIDataOutput = t.type({\n insuredApplicantIndex: optionFromUndefined(t.string),\n cpiData: CPIData,\n});\nexport type GetCPIDataOutput = t.TypeOf;\n\nexport const getCPIData = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"additionaldetails\", \"getCPI\"],\n outputCodec: GetCPIDataOutput,\n});\n\nconst ProceedWithApplicantDetailsOutput = t.type({\n hasCPI: t.boolean,\n showCPI: t.boolean,\n proceedWithApplicantDetailsData: ApplicantsRecordC(ApplicantDetailsConfig),\n});\nexport type ProceedWithApplicantDetailsOutput = t.TypeOf<\n typeof ProceedWithApplicantDetailsOutput\n>;\n\nexport const proceedWithApplicantDetails = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"proceedWithApplicantDetails\"],\n outputCodec: ProceedWithApplicantDetailsOutput,\n});\n\nexport const HealthQuestionnaireState = t.keyof(\n {\n COMPLETED: true,\n CPI_NOT_FILLED: true,\n FILLED: true,\n NOT_NEEDED: true,\n RESULT_RECEIVED: true,\n TODO: true,\n },\n \"HealthQuestionnaireState\"\n);\n\nexport type HealthQuestionnaireState = t.TypeOf<\n typeof HealthQuestionnaireState\n>;\n\nconst ProceedWithACApplicantDetailsResponse = t.type(\n {\n hasMaritalStatus: t.boolean,\n maritalStatus: optionFromUndefined(MaritalStatus),\n hasBirthDate: t.boolean,\n hasEmploymentInfo: t.boolean,\n hasProbationInfo: t.boolean,\n hasCompletedCPI: t.boolean,\n hasCompletedPreScoring: t.boolean,\n hasMainIncomeTypeEmployed: t.boolean,\n hasCompletedClientProfile: t.boolean,\n hasCompletedLegalData: t.boolean,\n healthQuestionnaireState: HealthQuestionnaireState,\n isInsuredClient: t.boolean,\n sameHousehold: t.boolean,\n },\n \"ProceedWithACApplicantDetailsResponse\"\n);\n\nexport const ProceedWithACApplicantDetails = t.type(\n {\n hasCPI: t.boolean,\n showCPI: t.boolean,\n proceedWithACApplicantDetailsData: ApplicantsRecordC(\n ProceedWithACApplicantDetailsResponse\n ),\n },\n \"ProceedWithACApplicantDetails\"\n);\n\nexport type ProceedWithACApplicantDetails = t.TypeOf<\n typeof ProceedWithACApplicantDetails\n>;\n\nexport const proceedWithACApplicantDetails = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"proceedWithACApplicantDetails\"],\n outputCodec: ProceedWithACApplicantDetails,\n});\n\nexport const editEmail = apiCall({\n inputCodec: t.type({\n applicantIndex: t.string,\n email: t.string,\n }),\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"mortgage\", \"client\", \"profile\", \"email\", \"edit\"],\n outputCodec: t.unknown,\n});\n\nexport const checkExistingClientMortgage = apiCall({\n path: [\"packages\", \"mortgage\", \"client\", \"checkExisting\"],\n inputCodec: CheckExistingClientInput,\n inputEq: eqCheckExistingClientInput,\n outputCodec: CheckExistingClientOutput,\n errorCodec: ApplicationLimitError,\n});\n\nexport const NewMortgageCheckClientStatus = t.keyof({\n UNDERAGE_BRANCH: true,\n UNDERAGE_REMOTE: true,\n NOTES_CLIENT_COMPLETE: true,\n KYC_HIGH_RISK_BRANCH: true,\n KYC_HIGH_RISK_REMOTE: true,\n KYC_FOREIGN: true,\n SUCCESS: true,\n UPDATE_CONTACTS_BRANCH: true,\n UPDATE_CONTACTS_REMOTE: true,\n VERIFY_CONTACTS_BRANCH: true,\n VERIFY_CONTACTS_REMOTE: true,\n ADD_PASS_BRANCH: true,\n ADD_PASS_REMOTE: true,\n MTG_UPDATE_ID: true,\n MTG_UPDATE_ID_CONTACTS: true,\n UPDATE_ID_CONTACTS_VERIFY_CONTACTS: true,\n UPDATE_ID_CONTACTS_VERIFY_CONTACTS_SET_UP_PASS_BRANCH: true,\n UPDATE_ID_CONTACTS_VERIFY_CONTACTS_SET_UP_PASS_REMOTE: true,\n UPDATE_ID_VERIFY_CONTACTS: true,\n UPDATE_ID_VERIFY_CONTACTS_SET_UP_PASS_BRANCH: true,\n UPDATE_ID_VERIFY_CONTACTS_SET_UP_PASS_REMOTE: true,\n UPDATE_ID_SET_UP_PASS_BRANCH: true,\n UPDATE_ID_SET_UP_PASS_REMOTE: true,\n});\n\nexport type NewMortgageCheckClientStatus = t.TypeOf<\n typeof NewMortgageCheckClientStatus\n>;\n\nexport const CheckClientStatusOutput = t.type({\n status: NewMortgageCheckClientStatus,\n firstName: NonEmptyString,\n lastName: NonEmptyString,\n phoneNumber: NonEmptyString,\n});\nexport type CheckClientStatusOutput = t.TypeOf;\n\nexport const checkClientStatus = apiCall({\n path: [\"packages\", \"mortgage\", \"client\", \"checkStatus\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CheckClientStatusOutput,\n errorCodec: GenericError,\n});\n\nconst ProceedWithPreliminaryDecision = t.type(\n {\n initialDARDocId: NonEmptyString,\n gdprConsentId: optionFromUndefined(NonEmptyString),\n cpiApplicationDocId: optionFromUndefined(NonEmptyString),\n cpiMediationDocId: optionFromUndefined(NonEmptyString),\n cpiNoHq: optionFromUndefined(t.boolean),\n },\n \"ProceedWithPreliminaryDecision\"\n);\n\nexport type ProceedWithPreliminaryDecision = t.TypeOf<\n typeof ProceedWithPreliminaryDecision\n>;\n\nexport const proceedWithPreliminaryDecision = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"proceedWithPreliminaryDecision\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: withFallback(\n optionFromUndefined(ApplicantsRecordC(ProceedWithPreliminaryDecision)),\n option.none\n ),\n});\n\nconst ProceedWithPreliminaryDecisionStatus = t.type(\n {\n ready: t.boolean,\n },\n \"ProceedWithPreliminaryDecisionStatus\"\n);\n\nexport type ProceedWithPreliminaryDecisionStatus = t.TypeOf<\n typeof ProceedWithPreliminaryDecisionStatus\n>;\n\nexport const proceedWithPreliminaryDecisionStatus = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"proceedWithPreliminaryDecision\",\n \"status\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: withFallback(\n optionFromUndefined(\n ApplicantsRecordC(ProceedWithPreliminaryDecisionStatus)\n ),\n option.none\n ),\n});\n\nexport const proceedWithPreliminarySkipAuthorization = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"proceedWithPreliminarySkipAuthorization\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.boolean,\n});\n\nconst PreliminaryDecisionOtpGenerationInput = t.intersection([\n OtpGenerationInput,\n t.type({ applicantIndex: t.string }),\n]);\nexport type PreliminaryDecisionOtpGenerationInput = t.TypeOf<\n typeof PreliminaryDecisionOtpGenerationInput\n>;\n\nconst eqPreliminaryDecisionOtpGenerationInput = eq.getStructEq({\n phoneNumber: eq.eqString,\n applicantIndex: eq.eqString,\n});\n\nexport const PreliminaryDecisionOtpGenerationError = t.union([\n OtpGenerationError,\n ApplicationLimitError,\n GenericError,\n]);\n\nexport type PreliminaryDecisionOtpGenerationError = t.TypeOf<\n typeof PreliminaryDecisionOtpGenerationError\n>;\n\nexport const preliminaryDecisionOtpGeneration = apiCall({\n inputEq: eqPreliminaryDecisionOtpGenerationInput,\n inputCodec: PreliminaryDecisionOtpGenerationInput,\n outputCodec: OtpGenerationOutput,\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"otp\",\n ],\n errorCodec: PreliminaryDecisionOtpGenerationError,\n});\n\nexport const preliminaryDecisionCanAuthorizeOTP = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n outputCodec: t.boolean,\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"canAuthorizeOTP\",\n ],\n});\n\nconst ConsentRequestInput = withApplicantIndex(\n t.type({\n accepted: t.boolean,\n })\n);\n\ntype ConsentRequestInput = t.TypeOf;\n\nexport const setMarketingConsent = apiCall({\n inputCodec: ConsentRequestInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n path: [\"packages\", \"mortgage\", \"marketingConsent\"],\n});\n\nexport const setNonDebtsOrBankruptDeclaration = apiCall({\n inputCodec: ConsentRequestInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n path: [\"packages\", \"mortgage\", \"nonDebtsOrBankruptDeclaration\"],\n});\n\nconst PreliminaryDecisionOtpVerifyInput = withCoApplicant(OtpVerifyInput);\n\nexport type PreliminaryDecisionOtpVerifyInput = t.TypeOf<\n typeof PreliminaryDecisionOtpVerifyInput\n>;\n\nconst eqPreliminaryDecisionOtpVerifyInput = eqWithCoApplicant(eqOtpVerifyInput);\n\nexport const preliminaryDecisionOtpVerify = apiCall({\n inputEq: eqPreliminaryDecisionOtpVerifyInput,\n inputCodec: PreliminaryDecisionOtpVerifyInput,\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"otp\",\n \"verify\",\n ],\n errorCodec: MTG3POtpVerifyError,\n});\n\nconst SubmitForPreliminaryDecisionInput = t.type(\n {\n comment: t.string,\n },\n \"SubmitForPreliminaryDecisionInput\"\n);\n\nexport const submitForPreliminaryDecision = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"submitForPreliminaryDecision\",\n ],\n inputCodec: SubmitForPreliminaryDecisionInput,\n inputEq: eq.fromEquals(constFalse),\n errorCodec: MTGSubmitApplicationError,\n});\n\nconst GetBranchesOutput = t.type({\n branches: BranchesList,\n});\n\nexport const getBranches = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-user\", \"branches\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: GetBranchesOutput,\n});\n\nconst GetBankersInput = t.type({\n branchCode: t.string,\n});\n\nconst GetBankersOutput = t.type({\n bankers: BankersList,\n});\n\nconst eqGetBankersInput = eq.getStructEq({\n branchCode: eq.eqString,\n});\n\nexport const getBankers = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-user\", \"bankers\"],\n inputCodec: GetBankersInput,\n inputEq: eqGetBankersInput,\n outputCodec: GetBankersOutput,\n});\n\nconst savePreferredBankerInput = t.type({\n branchCode: t.string,\n bankerId: t.string,\n});\n\nconst eqSavePreferredBankerInput = eq.getStructEq({\n branchCode: eq.eqString,\n bankerId: eq.eqString,\n});\n\nexport const savePreferredBanker = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-user\", \"save\"],\n inputCodec: savePreferredBankerInput,\n inputEq: eqSavePreferredBankerInput,\n outputCodec: t.unknown,\n});\n\nexport const getAssignedUser = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-user\", \"get\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AssignedUser,\n});\n\nconst handOverApplicationInput = t.type({\n handOverTo: UserType,\n});\n\nconst eqHandOverApplicationInput = eq.getStructEq({\n handOverTo: eq.eqString,\n});\n\nexport const handOverApplication = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-user\", \"handover\"],\n inputCodec: handOverApplicationInput,\n inputEq: eqHandOverApplicationInput,\n outputCodec: t.unknown,\n});\n\nexport const GetBrokersInput = t.type(\n {\n partialEmail: t.string,\n },\n \"GetBrokersInput\"\n);\nexport interface GetBrokersInput extends t.TypeOf {}\n\nexport const eqGetBrokersInput: Eq = eq.getStructEq({\n partialEmail: eq.eqString,\n});\n\nexport const GetBrokersOutput = t.array(t.string, \"GetBrokersOutput\");\nexport interface GetBrokersOutput extends t.TypeOf {}\n\nexport const getBrokers = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-broker\", \"brokers\"],\n inputCodec: GetBrokersInput,\n inputEq: eqGetBrokersInput,\n outputCodec: GetBrokersOutput,\n});\n\nexport const getAssignedBrokerForBanker = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-broker\", \"get\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AssignedBrokerForBanker,\n});\n\nconst saveAssignedBrokerForBankerInput = t.type({\n email: t.string,\n});\n\nconst eqSaveAssignedBrokerForBankerInput = eq.getStructEq({\n email: eq.eqString,\n});\n\nconst saveAssignedBrokerForBankerOutput = t.union([\n t.type({\n status: t.literal(\"VALID\"),\n }),\n t.type({\n status: t.literal(\"INVALID\"),\n }),\n]);\n\nexport const saveAssignedBrokerForBanker = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-broker\", \"save\"],\n inputCodec: saveAssignedBrokerForBankerInput,\n inputEq: eqSaveAssignedBrokerForBankerInput,\n outputCodec: saveAssignedBrokerForBankerOutput,\n});\n\nexport const removeAssignedBrokerForBanker = apiCall({\n path: [\"packages\", \"mortgage\", \"assigned-broker\", \"remove\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst PDReceivedStatus = t.type({\n responseStatus: t.literal(\"RECEIVED\"),\n applicationStatus: PreliminaryDecisionStatus,\n overLimitDecisionReasons: optionFromUndefined(t.array(LocalizedString)),\n});\n\nexport type PDReceivedStatus = t.TypeOf;\n\nexport function isPDReceivedStatus(s: PDStatus): s is PDReceivedStatus {\n return s.responseStatus === \"RECEIVED\";\n}\n\nconst PDNotReceivedStatus = t.type({\n responseStatus: t.literal(\"NOT_RECEIVED\"),\n});\n\ntype PDNotReceivedStatus = t.TypeOf;\n\nconst PDStatus = t.union(\n [PDNotReceivedStatus, PDReceivedStatus],\n \"PreliminaryDecisionStatus\"\n);\n\nexport type PDStatus = t.TypeOf;\n\nconst PreliminaryDecisionStatusOutput = optionFromNullable(\n PDStatus,\n \"PreliminaryDecisionStatus\"\n);\n\nexport type PreliminaryDecisionStatusOutput = t.TypeOf<\n typeof PreliminaryDecisionStatusOutput\n>;\n\nexport const preliminaryDecisionStatus = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"status\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: PreliminaryDecisionStatusOutput,\n});\n\nconst EscalationSubmitInput = t.type(\n {\n comment: NonEmptyString,\n },\n \"EscalationSubmitInput\"\n);\n\nexport const escalationSubmit = apiCall({\n path: [\"packages\", \"mortgage\", \"escalation\", \"submit\"],\n inputCodec: EscalationSubmitInput,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst EscalationUploadEmailInput = t.type(\n {\n fileName: NonEmptyString,\n fileContent: FileContent,\n },\n \"EscalationUploadEmailInput\"\n);\n\nexport const escalationUploadEmail = apiCall({\n path: [\"packages\", \"mortgage\", \"escalation\", \"uploadEmail\"],\n inputCodec: EscalationUploadEmailInput,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst SubmitForFinalDecision = t.type({\n comment: t.string,\n});\n\nexport const submitFinalDecision = apiCall({\n path: [\"packages\", \"mortgage\", \"application\", \"ac\", \"submitFinalDecision\"],\n inputCodec: SubmitForFinalDecision,\n inputEq: eq.fromEquals(constFalse),\n errorCodec: MTGSubmitApplicationError,\n});\n\nconst FinalDecisionStatusOutputSome = t.union(\n [\n t.type({\n responseStatus: t.literal(\"NOT_RECEIVED\"),\n }),\n t.type({\n responseStatus: t.literal(\"RECEIVED\"),\n applicationStatus: FinalDecisionStatus,\n }),\n ],\n \"FinalDecisionStatus\"\n);\n\nexport type FinalDecisionStatusOutputSome = t.TypeOf<\n typeof FinalDecisionStatusOutputSome\n>;\n\nconst FinalDecisionStatusOutput = optionFromNullable(\n FinalDecisionStatusOutputSome,\n \"FinalDecisionStatus\"\n);\n\nexport type FinalDecisionStatusOutput = t.TypeOf<\n typeof FinalDecisionStatusOutput\n>;\n\nexport const finalDecisionStatus = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"finalDecision\",\n \"status\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: FinalDecisionStatusOutput,\n});\n\nexport const reworkActions = apiCall({\n path: [\"packages\", \"mortgage\", \"rework\", \"actions\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ReworkActions,\n});\n\nexport const reworkData = apiCall({\n path: [\"packages\", \"mortgage\", \"rework\", \"data\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ReworkData,\n});\n\nexport const preliminaryDecisionValidate = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"validate\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n});\n\nconst PreliminaryDecisionValidateStatusOutput = t.type(\n {\n status: t.keyof({\n PENDING: true,\n IS_VALID: true,\n NOT_COMPLETED: true,\n NO_BANKER_ASSIGNED: true,\n ERROR: true,\n }),\n },\n \"PreliminaryDecisionValidateStatusOutput\"\n);\nexport type PreliminaryDecisionValidateStatusOutput = t.TypeOf<\n typeof PreliminaryDecisionValidateStatusOutput\n>;\n\nexport const preliminaryDecisionValidateStatus = apiCall({\n path: [\n \"packages\",\n \"mortgage\",\n \"application\",\n \"ac\",\n \"preliminaryDecision\",\n \"validationStatus\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: PreliminaryDecisionValidateStatusOutput,\n});\n\nexport const initiateChangeProcess = apiCall({\n path: [\"packages\", \"mortgage\", \"application\", \"ac\", \"initiateChangeProcess\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const termsAndConditions = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: TermsAndConditionsOutput,\n path: [\"packages\", \"mortgage\", \"termsAndConditionsDocumentList\"],\n});\n\nexport const linkGenerationNow = apiCall({\n inputEq: eqLinkGenerationInput,\n path: [\"packages\", \"mortgage\", \"email\", \"activationLink\", \"now\"],\n inputCodec: LinkGenerationInput,\n outputCodec: LinkGenerationOutput,\n errorCodec: LinkGenerationError,\n});\n\nexport const generateIdentificationOtp = apiCall({\n path: [\"packages\", \"mortgage\", \"client\", \"identification\", \"otp\"],\n inputCodec: OtpGenerationInputBase,\n inputEq: eqOtpGenerationInputBase,\n outputCodec: OTPGenerationOutputBase,\n errorCodec: t.union([OtpGenerationErrorBase, GenericError]),\n});\n\nconst eqWithCoapplicantOtpVerifyInput: Eq = eqWithCoApplicant(\n eq.getStructEq({\n otp: eq.eqString,\n })\n);\n\nexport const verifyIdentificationOtp = apiCall({\n inputEq: eqWithCoapplicantOtpVerifyInput,\n path: [\"packages\", \"mortgage\", \"client\", \"identification\", \"otp\", \"verify\"],\n inputCodec: OtpVerifyInputBase,\n errorCodec: OtpVerifyErrorBase,\n});\n","import { useMemo, useState } from \"react\";\nimport {\n constant,\n constNull,\n constFalse,\n pipe,\n constTrue,\n} from \"fp-ts/function\";\nimport {\n Form,\n Banner,\n DropdownOption,\n TextChildren,\n FormSection,\n Box,\n} from \"design-system\";\nimport { LocaleKey, useFormatMessage } from \"../../../intl\";\nimport {\n ApplicantIndex,\n LoanList,\n ReworkConsumerLoanOrMortgage,\n ReworkCreditBureauResult,\n ReworkCreditCard,\n ReworkOverdraft,\n} from \"../../domain\";\nimport { array, boolean, option, taskEither, nonEmptyArray } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { SelectedApplicant } from \"../../mortgageDashboardUtils\";\nimport { useCommand } from \"../../../useAPI\";\nimport * as api from \"./api\";\nimport { MoneyAmount } from \"../../../globalDomain\";\nimport { MortgageConsumerLoanStack } from \"./MortgageConsumerLoanStack\";\nimport { OverdraftStack } from \"./OverdraftStack\";\nimport { CreditCardStack } from \"./CreditCardStack\";\nimport { AmountLimit } from \"../../api\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport * as standardLoanApi from \"../../../StandardLoan/ExpensesAndAdditionalIncome/ExpensesConfirmation/CurrentLiabilitiesDialog/api\";\nimport { foldLiabilitiesVariant } from \"../../../StandardLoan/domain\";\nimport { useAppContext } from \"../../../useAppContext\";\nimport * as mortgageApi from \"../../api\";\nimport * as classes from \"./Liabilities.treat\";\nimport * as ovdApi from \"../../../PreapprovedOverdraft/ExpensesPage/ExpensesConfirmation/CurrentLiabilitiesDialog/api\";\n\nexport type LiabilitiesVariant = \"CF\" | \"MTG\" | \"OVD\";\n\ntype Props = {\n loanList: LoanList;\n onCancel: () => unknown;\n onSave: () => void;\n selectedApplicant: SelectedApplicant;\n isBonitaEvaluated: boolean;\n isACPhase: boolean;\n isViewMode: boolean;\n selectedOfferLoanAmount: Option;\n othersLoanList: Array<{ loanList: Option } & ApplicantIndex>;\n amountLimits: {\n [key in\n | \"monthlyInstallmentAmount\"\n | \"mtgCurrentBalance\"\n | \"mtgOriginalLoanAmount\"\n | \"ccAndOvdCurrentBalance\"\n | \"ccAndOvdLimit\"]: AmountLimit;\n };\n providersList: DropdownOption[];\n onEditStart: () => void;\n onEditEnd: () => void;\n variant: LiabilitiesVariant;\n reworkCBResults: Option;\n checks: Option;\n updateChecks: () => void;\n};\n\nconst getTotalCurrentBalances = (tot: number, loanList: LoanList) => {\n const sumConsumerLoansOrMortgagesList = loanList.consumerLoansOrMortgagesList.reduce(\n (tot, { usedForRefinance, currentBalance }) =>\n pipe(usedForRefinance, option.getOrElse(constFalse))\n ? tot +\n pipe(\n currentBalance,\n option.map(({ amount }) => amount),\n option.getOrElse(constant(0))\n )\n : tot,\n 0\n );\n return tot + sumConsumerLoansOrMortgagesList;\n};\n\ntype LiabilitiesErrors = \"GenericError\" | \"IsInEditMode\";\n\nconst liabilitiesErrorsMap = (err: LiabilitiesErrors): LocaleKey => {\n switch (err) {\n case \"GenericError\":\n return \"GenericError\";\n case \"IsInEditMode\":\n return \"Mortgage.CBResults.Liabilities.liabilitiesValidationError.IsInEditMode\";\n }\n};\n\nexport function Liabilities(props: Props) {\n const formatMessage = useFormatMessage();\n const {\n config: { enableMtgImprovementsUi },\n } = useAppContext();\n\n const [loanList, setLoanList] = useState(props.loanList);\n const [isAdding, setIsAdding] = useState>(\n option.none\n );\n const setAddingProcess = (itemType: Option) => {\n setIsAdding(itemType);\n pipe(itemType, option.fold(props.onEditEnd, props.onEditStart));\n };\n\n const [hasEditedOnce, setHasEditedOnce] = useState(false);\n const [hasLiabilities, setHasLiabilities] = useState({\n isConsumerLoansOrMortgagesListAdded: false,\n isCreditCardsListAdded: false,\n isOverdraftsListAdded: false,\n });\n\n const [formErrors, setFormErrors] = useState<\n Option>\n >(option.none);\n const [editingRecordID, setEditingRecordID] = useState<\n Option\n >(option.none);\n const setEditingProcess = (recordId: Option) => {\n setEditingRecordID(recordId);\n pipe(recordId, option.fold(props.onEditEnd, props.onEditStart));\n };\n const isInteractingWithAnyForm =\n option.isSome(isAdding) || option.isSome(editingRecordID);\n\n const submitLabel = pipe(\n props.isBonitaEvaluated && hasEditedOnce,\n boolean.fold(\n () => formatMessage(\"Mortgage.CBResults.Liabilities.save\"),\n () => formatMessage(\"Mortgage.CBResults.Liabilities.saveUpdateBonita\")\n )\n );\n const isNotSentToLf = pipe(\n props.checks,\n option.fold(\n () => false,\n checks =>\n pipe(checks.registers.isNotSentToLf, option.getOrElse(constTrue))\n )\n );\n\n const deleteLiabilityRecord = useCommand(api.deleteLiabilityRecord);\n const cancelWithoutSaving = useCommand(api.cancelWithoutSaving);\n const saveAndUpdate = useCommand(\n foldLiabilitiesVariant(props.variant, {\n onMtg: () => api.saveAndUpdate,\n onCf: () => standardLoanApi.saveAndUpdate,\n onOvd: () => ovdApi.saveAndUpdate,\n })\n );\n const cancelWithoutSavingStandardLoan = useCommand(\n standardLoanApi.cancelWithoutSaving\n );\n const deleteLiabilityRecordStandardLoan = useCommand(\n standardLoanApi.deleteLiabilityRecord\n );\n\n const cancelWithoutSavingOverdraft = useCommand(ovdApi.cancelWithoutSaving);\n\n const deleteLiabilityRecordOverdraft = useCommand(\n ovdApi.deleteLiabilityRecord\n );\n\n const removeLoanRecord = (recordId: NonEmptyString) =>\n pipe(\n foldLiabilitiesVariant(props.variant, {\n onMtg: () =>\n deleteLiabilityRecord({\n applicantIndex: props.selectedApplicant.index,\n recordId,\n }),\n onCf: () => deleteLiabilityRecordStandardLoan({ recordId }),\n onOvd: () => deleteLiabilityRecordOverdraft({ recordId }),\n }),\n taskEither.chain(() =>\n taskEither.fromIO(() =>\n setLoanList({\n consumerLoansOrMortgagesList: loanList.consumerLoansOrMortgagesList.filter(\n c => c.recordId !== recordId\n ),\n creditCardsList: loanList.creditCardsList.filter(\n c => c.recordId !== recordId\n ),\n overdraftsList: loanList.overdraftsList.filter(\n c => c.recordId !== recordId\n ),\n })\n )\n ),\n taskEither.chain(() => taskEither.fromIO(props.updateChecks))\n )();\n\n const otherApplicantsTotalLoanAmount = pipe(\n props.othersLoanList,\n array.map(({ loanList }) => loanList),\n array.compact,\n array.reduce(0, getTotalCurrentBalances)\n );\n\n const totalLoanAmount = useMemo(\n () => getTotalCurrentBalances(0, loanList) + otherApplicantsTotalLoanAmount,\n [loanList, otherApplicantsTotalLoanAmount]\n );\n\n const atLeastOneLiability =\n loanList.consumerLoansOrMortgagesList.length > 0 ||\n loanList.creditCardsList.length > 0 ||\n loanList.overdraftsList.length > 0;\n\n const areLiabilitiesAdded = (): boolean => {\n const {\n isConsumerLoansOrMortgagesListAdded,\n isCreditCardsListAdded,\n isOverdraftsListAdded,\n } = hasLiabilities;\n return (\n (isConsumerLoansOrMortgagesListAdded ||\n isCreditCardsListAdded ||\n isOverdraftsListAdded) &&\n props.variant === \"OVD\"\n );\n };\n\n const formButtons = pipe(\n props.isViewMode,\n boolean.fold(\n constant({\n submitButton: {\n label: submitLabel,\n action: pipe(\n option.isNone(isAdding) && option.isNone(editingRecordID),\n boolean.fold(\n () => taskEither.left(\"IsInEditMode\" as const),\n () =>\n pipe(\n props.variant !== \"OVD\"\n ? saveAndUpdate()\n : areLiabilitiesAdded()\n ? saveAndUpdate()\n : cancelWithoutSavingOverdraft(),\n taskEither.mapLeft(\n () => \"GenericError\" as const\n )\n )\n ),\n taskEither.chain(() => taskEither.fromIO(props.onSave)),\n taskEither.orElse(err =>\n taskEither.fromIO(() =>\n setFormErrors(\n option.some(\n nonEmptyArray.of(\n formatMessage(liabilitiesErrorsMap(err)) as TextChildren\n )\n )\n )\n )\n )\n ),\n },\n cancelButton: {\n label: formatMessage(\"Mortgage.CBResults.Liabilities.cancel\"),\n action: pipe(\n props.onCancel,\n taskEither.fromIO,\n taskEither.chain(() =>\n foldLiabilitiesVariant(props.variant, {\n onMtg: () =>\n cancelWithoutSaving({\n applicantIndex: props.selectedApplicant.index,\n }),\n onCf: () => cancelWithoutSavingStandardLoan(),\n onOvd: () => cancelWithoutSavingOverdraft(),\n })\n )\n ),\n },\n }),\n constant({})\n )\n );\n\n const getReworkConsumerLoan = (\n recordId: NonEmptyString\n ): Option =>\n pipe(\n props.reworkCBResults,\n option.chain(({ existingLoans }) => existingLoans),\n option.chain(\n array.findFirst(loan =>\n pipe(\n loan.recordId,\n option.exists(id => id === recordId)\n )\n )\n )\n );\n\n const getReworkOverdraft: (\n recordId: NonEmptyString\n ) => Option = recordId =>\n pipe(\n props.reworkCBResults,\n option.chain(reworkCBResults => reworkCBResults.overdrafts),\n option.chain(overdrafts =>\n pipe(\n overdrafts,\n array.findFirst(overdrafts =>\n pipe(\n overdrafts.recordId,\n option.exists(rId => rId === recordId)\n )\n )\n )\n )\n );\n\n const getReworkCreditCard: (\n recordId: NonEmptyString\n ) => Option = recordId =>\n pipe(\n props.reworkCBResults,\n option.chain(reworkCBResults => reworkCBResults.creditCards),\n option.chain(creditCards =>\n pipe(\n creditCards,\n array.findFirst(creditCards =>\n pipe(\n creditCards.recordId,\n option.exists(rId => rId === recordId)\n )\n )\n )\n )\n );\n\n const renderMTGInfoBanner = (\n \n );\n\n const renderCFInfoBanner = (\n \n );\n\n return (\n \n
\n \n {props.variant === \"CF\"\n ? renderCFInfoBanner\n : enableMtgImprovementsUi\n ? !props.isViewMode && atLeastOneLiability && renderMTGInfoBanner\n : !props.isViewMode && renderMTGInfoBanner}\n adding === \"consumerLoansOrMortgagesList\")\n )}\n editingRecordID={editingRecordID}\n isInteractingWithAnyForm={isInteractingWithAnyForm}\n consumerLoansOrMortgagesList={loanList.consumerLoansOrMortgagesList}\n selectedApplicant={props.selectedApplicant}\n onCheck={(credit, value: boolean) => {\n setHasEditedOnce(true);\n setLoanList(loanList => ({\n ...loanList,\n consumerLoansOrMortgagesList: loanList.consumerLoansOrMortgagesList.map(\n c => ({\n ...c,\n usedForRefinance:\n c.recordId === credit.recordId\n ? option.some(value)\n : c.usedForRefinance,\n })\n ),\n }));\n }}\n onRemove={recordId => {\n removeLoanRecord(recordId);\n setHasLiabilities(prevState => ({\n ...prevState,\n isConsumerLoansOrMortgagesListAdded: true,\n }));\n }}\n onEditing={recordId => setEditingProcess(option.some(recordId))}\n onEdit={credit => {\n setLoanList(credits => ({\n ...credits,\n consumerLoansOrMortgagesList: credits.consumerLoansOrMortgagesList.map(\n c => (c.recordId === credit.recordId ? credit : c)\n ),\n }));\n setHasEditedOnce(true);\n setEditingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isConsumerLoansOrMortgagesListAdded: true,\n }));\n }}\n onAdd={loan => {\n setLoanList(loans => ({\n ...loans,\n consumerLoansOrMortgagesList: loans.consumerLoansOrMortgagesList.concat(\n loan\n ),\n }));\n setHasEditedOnce(true);\n setAddingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isConsumerLoansOrMortgagesListAdded: true,\n }));\n }}\n onCancel={() => {\n setEditingProcess(option.none);\n setAddingProcess(option.none);\n }}\n onAdding={() =>\n setAddingProcess(option.some(\"consumerLoansOrMortgagesList\"))\n }\n providersList={props.providersList}\n amountLimits={{\n monthlyInstallmentAmount:\n props.amountLimits.monthlyInstallmentAmount,\n mtgCurrentBalance: props.amountLimits.mtgCurrentBalance,\n mtgOriginalLoanAmount: props.amountLimits.mtgOriginalLoanAmount,\n }}\n isACPhase={props.isACPhase}\n variant={props.variant}\n getReworkConsumerLoan={getReworkConsumerLoan}\n />\n\n adding === \"overdraftsList\")\n )}\n editingRecordID={editingRecordID}\n isInteractingWithAnyForm={isInteractingWithAnyForm}\n overdraftsList={loanList.overdraftsList}\n selectedApplicant={props.selectedApplicant}\n onRemove={recordId => {\n removeLoanRecord(recordId);\n setHasLiabilities(prevState => ({\n ...prevState,\n isOverdraftsListAdded: true,\n }));\n }}\n onEditing={recordId => setEditingProcess(option.some(recordId))}\n onEdit={credit => {\n setLoanList(credits => ({\n ...credits,\n overdraftsList: credits.overdraftsList.map(c =>\n c.recordId === credit.recordId ? credit : c\n ),\n }));\n setHasEditedOnce(true);\n setEditingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isOverdraftsListAdded: true,\n }));\n }}\n onCancel={() => {\n setEditingProcess(option.none);\n setAddingProcess(option.none);\n }}\n onAdding={() => setAddingProcess(option.some(\"overdraftsList\"))}\n onAdd={overdraft => {\n setLoanList(loans => ({\n ...loans,\n overdraftsList: loans.overdraftsList.concat(overdraft),\n }));\n setHasEditedOnce(true);\n setAddingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isOverdraftsListAdded: true,\n }));\n }}\n providersList={props.providersList}\n amountLimits={{\n ccAndOvdCurrentBalance: props.amountLimits.ccAndOvdCurrentBalance,\n ccAndOvdLimit: props.amountLimits.ccAndOvdLimit,\n }}\n isACPhase={props.isACPhase}\n variant={props.variant}\n getReworkOverdraft={getReworkOverdraft}\n getReworkConsumerLoan={getReworkConsumerLoan}\n />\n\n adding === \"creditCardsList\")\n )}\n editingRecordID={editingRecordID}\n isInteractingWithAnyForm={isInteractingWithAnyForm}\n creditCardsList={loanList.creditCardsList}\n selectedApplicant={props.selectedApplicant}\n onEdit={credit => {\n setLoanList(credits => ({\n ...credits,\n creditCardsList: credits.creditCardsList.map(c =>\n c.recordId === credit.recordId ? credit : c\n ),\n }));\n setHasEditedOnce(true);\n setEditingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isCreditCardsListAdded: true,\n }));\n }}\n onAdd={creditCard => {\n setLoanList(loans => ({\n ...loans,\n creditCardsList: loans.creditCardsList.concat(creditCard),\n }));\n setHasEditedOnce(true);\n setAddingProcess(option.none);\n props.updateChecks();\n setHasLiabilities(prevState => ({\n ...prevState,\n isCreditCardsListAdded: true,\n }));\n }}\n onCancel={() => {\n setEditingProcess(option.none);\n setAddingProcess(option.none);\n }}\n onAdding={() => setAddingProcess(option.some(\"creditCardsList\"))}\n onRemove={recordId => {\n removeLoanRecord(recordId);\n setHasLiabilities(prevState => ({\n ...prevState,\n isCreditCardsListAdded: true,\n }));\n }}\n onEditing={recordId => setEditingProcess(option.some(recordId))}\n providersList={props.providersList}\n amountLimits={{\n ccAndOvdCurrentBalance: props.amountLimits.ccAndOvdCurrentBalance,\n ccAndOvdLimit: props.amountLimits.ccAndOvdLimit,\n }}\n isACPhase={props.isACPhase}\n variant={props.variant}\n getReworkCreditCard={getReworkCreditCard}\n getReworkConsumerLoan={getReworkConsumerLoan}\n />\n {pipe(\n props.selectedOfferLoanAmount,\n option.filter(\n ({ amount: offerLoanAmount }) => totalLoanAmount > offerLoanAmount\n ),\n option.fold(constNull, () => (\n \n ))\n )}\n {enableMtgImprovementsUi && isNotSentToLf && (\n \n )}\n \n
\n
\n );\n}\n","import { LocalizedString } from \"design-system\";\nimport { CreditType } from \"./domain\";\nimport { useFormatMessage } from \"../intl\";\n\nexport function useFormatCreditType() {\n const formatMessage = useFormatMessage();\n\n return function formatCreditType(creditType: CreditType): LocalizedString {\n switch (creditType) {\n case \"CONSUMER_LOAN\":\n return formatMessage(\n \"Liabilities.AddConsumerLoanOrMortgage.creditType.consumerLoan\"\n );\n case \"MORTGAGE_LOAN\":\n return formatMessage(\n \"Liabilities.AddConsumerLoanOrMortgage.creditType.mortgageLoan\"\n );\n }\n };\n}\n","import { Box, DropdownOption, Stack } from \"design-system\";\nimport { LiabilitySection } from \"./LiabilitySection\";\nimport { array, option } from \"fp-ts\";\nimport { pipe, constFalse, constTrue, constVoid } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n ConsumerLoanOrMortgage,\n CreditType,\n LoanList,\n ReworkConsumerLoanOrMortgage,\n} from \"../../domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { ConsumerLoanOrMortgageForm } from \"./ConsumerLoanOrMortgageForm\";\nimport { SelectedApplicant } from \"../../mortgageDashboardUtils\";\nimport { EditSection } from \"./EditSection\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { AmountLimit } from \"../../api\";\nimport { LiabilitiesVariant } from \"./Liabilities\";\n\ntype Props = {\n isInteractingWithAnyForm: boolean;\n consumerLoansOrMortgagesList: Array;\n selectedApplicant: SelectedApplicant;\n isAdding: boolean;\n isACPhase: boolean;\n isViewMode: boolean;\n editingRecordID: Option;\n\n onEdit: (credit: ConsumerLoanOrMortgage) => unknown;\n onCancel: () => unknown;\n onAdding: (type: keyof LoanList) => unknown;\n onAdd: (coverdraft: ConsumerLoanOrMortgage) => unknown;\n onRemove: (recordId: NonEmptyString) => unknown;\n onEditing: (recordId: NonEmptyString) => unknown;\n onCheck: (credit: ConsumerLoanOrMortgage, val: boolean) => unknown;\n providersList: DropdownOption[];\n amountLimits: {\n [key in\n | \"monthlyInstallmentAmount\"\n | \"mtgCurrentBalance\"\n | \"mtgOriginalLoanAmount\"]: AmountLimit;\n };\n variant: LiabilitiesVariant;\n getReworkConsumerLoan: (\n recordId: NonEmptyString\n ) => Option;\n};\n\nexport function MortgageConsumerLoanStack(props: Props) {\n const formatMessage = useFormatMessage();\n\n const getLoans = (creditTypes: CreditType[], manuallyAdded: boolean) =>\n pipe(\n props.consumerLoansOrMortgagesList,\n array.filter(\n item =>\n item.manuallyAdded === manuallyAdded &&\n pipe(\n item.creditType,\n option.exists(creditType => creditTypes.includes(creditType))\n )\n )\n );\n\n const mortgagesList = getLoans([\"MORTGAGE_LOAN\"], false);\n const consumerLoansList = getLoans([\"CONSUMER_LOAN\"], false);\n const manuallyAddedConsumerLoansOrMortgages = getLoans(\n [\"CONSUMER_LOAN\", \"MORTGAGE_LOAN\"],\n true\n );\n\n const mortgagesConsumerLoanFormat = (credit: ConsumerLoanOrMortgage) => {\n const reworkConsumerLoan = props.getReworkConsumerLoan(credit.recordId);\n\n return (\n \n props.onEditing(credit.recordId)}\n onRemove={() => props.onRemove(credit.recordId)}\n isACPhase={props.isACPhase}\n isInteractingWithAnyForm={props.isInteractingWithAnyForm}\n selectedApplicant={props.selectedApplicant}\n providersList={props.providersList}\n amountLimits={props.amountLimits}\n edit={\n !props.isViewMode &&\n pipe(\n props.editingRecordID,\n option.filter(id => id === credit.recordId),\n option.fold(constFalse, constTrue)\n )\n }\n isViewMode={props.isViewMode}\n variant={props.variant}\n reworkConsumerLoan={reworkConsumerLoan}\n />\n \n );\n };\n\n const newMortgageConsumerLoanData = {\n label: formatMessage(\n \"Mortgage.CBResults.Liabilities.addMortgagesOrConsumerLoans\"\n ),\n action: () => props.onAdding(\"consumerLoansOrMortgagesList\"),\n disabled: props.isInteractingWithAnyForm,\n };\n\n return (\n \n \n \n !props.isAdding &&\n !props.isViewMode &&\n manuallyAddedConsumerLoansOrMortgages.length === 0\n )\n )}\n />\n {manuallyAddedConsumerLoansOrMortgages.length > 0 && (\n !props.isAdding && !props.isViewMode)\n )}\n />\n )}\n {props.isAdding && (\n \n \n \n )}\n \n );\n}\n","import \"!../../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./EditSection.treat.33xa4de.css\";\nexport var container = '_1gYyi';","import { Box, DropdownOption, Stack } from \"design-system\";\nimport { LiabilitySection } from \"./LiabilitySection\";\nimport { array, option } from \"fp-ts\";\nimport { pipe, constFalse, constTrue, constVoid } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n Overdraft,\n LoanList,\n ReworkOverdraft,\n ReworkConsumerLoanOrMortgage,\n} from \"../../domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { SelectedApplicant } from \"../../mortgageDashboardUtils\";\nimport { EditSection } from \"./EditSection\";\nimport { OverdraftForm } from \"./OverdraftForm\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { AmountLimit } from \"../../api\";\nimport { LiabilitiesVariant } from \"./Liabilities\";\n\ntype Props = {\n isInteractingWithAnyForm: boolean;\n overdraftsList: Array;\n selectedApplicant: SelectedApplicant;\n isAdding: boolean;\n isACPhase: boolean;\n isViewMode: boolean;\n editingRecordID: Option;\n\n onEdit: (overdraft: Overdraft) => unknown;\n onCancel: () => unknown;\n onAdding: (type: keyof LoanList) => unknown;\n onAdd: (overdraft: Overdraft) => unknown;\n onRemove: (recordId: NonEmptyString) => unknown;\n onEditing: (recordId: NonEmptyString) => unknown;\n providersList: DropdownOption[];\n amountLimits: {\n [key in \"ccAndOvdCurrentBalance\" | \"ccAndOvdLimit\"]: AmountLimit;\n };\n variant: LiabilitiesVariant;\n getReworkOverdraft: (recordId: NonEmptyString) => Option;\n getReworkConsumerLoan: (\n recordId: NonEmptyString\n ) => Option;\n};\n\nexport function OverdraftStack(props: Props) {\n const formatMessage = useFormatMessage();\n\n const { left: overdraftsList, right: manuallyAddedOverdraftsList } = pipe(\n props.overdraftsList,\n array.partition(overdraft => overdraft.manuallyAdded)\n );\n\n const overdraftsFormat = (credit: Overdraft) => {\n const reworkOverdraft = props.getReworkOverdraft(credit.recordId);\n\n return (\n \n props.onEditing(credit.recordId)}\n onRemove={() => props.onRemove(credit.recordId)}\n isACPhase={props.isACPhase}\n isInteractingWithAnyForm={props.isInteractingWithAnyForm}\n selectedApplicant={props.selectedApplicant}\n providersList={props.providersList}\n amountLimits={props.amountLimits}\n isViewMode={props.isViewMode}\n edit={\n !props.isViewMode &&\n pipe(\n props.editingRecordID,\n option.filter(id => id === credit.recordId),\n option.fold(constFalse, constTrue)\n )\n }\n variant={props.variant}\n reworkOverdraft={reworkOverdraft}\n />\n \n );\n };\n\n const newOverdraftData = {\n label: formatMessage(\"Mortgage.CBResults.Liabilities.addOverdrafts\"),\n action: () => props.onAdding(\"overdraftsList\"),\n disabled: props.isInteractingWithAnyForm,\n };\n\n return (\n \n \n !props.isViewMode &&\n !props.isAdding &&\n manuallyAddedOverdraftsList.length === 0\n )\n )}\n />\n {manuallyAddedOverdraftsList.length > 0 && (\n !props.isAdding && !props.isAdding)\n )}\n />\n )}\n {props.isAdding && (\n \n \n \n )}\n \n );\n}\n","import \"!../../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./Liabilities.treat.KsIdH_Y.css\";\nexport var margins = '_2tXWG';","import {\n Banner,\n Body,\n Card,\n LoadingButton,\n ReadOnlyField,\n Stack,\n LocalizedString,\n} from \"design-system\";\nimport { palette } from \"design-system/lib/styleConstants\";\nimport { option, taskEither } from \"fp-ts\";\nimport { constant, constFalse, constTrue, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../intl\";\nimport { useParentSharedReducer } from \"../BranchExperience/useSharedReducer\";\nimport { reducerConfig, foldState } from \"./state\";\nimport * as otpAPI from \"../OTP/domain\";\nimport { GenericError } from \"../globalDomain\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\n\nimport { useSnackBar } from \"../useSnackbar\";\nimport { getGenerateOTP } from \"./getGenerateOTP\";\n\ntype Props = {\n phoneNumber: string;\n onGenerateOTP: ReaderTaskEither<\n otpAPI.OtpGenerationInput,\n otpAPI.OtpGenerationError | GenericError,\n otpAPI.OtpGenerationOutput & { transactionId: Option }\n >;\n onFailure: () => unknown;\n};\n\ntype OTPError =\n | otpAPI.OtpGenerationError\n | otpAPI.OtpVerifyError\n | GenericError;\n\nexport function OTPAuthorizationParent(props: Props) {\n const formatMessage = useFormatMessage();\n const [state, dispatch] = useParentSharedReducer(reducerConfig, {\n type: \"initial\",\n });\n const { showSnackbar } = useSnackBar();\n\n const transactionId = pipe(\n state,\n foldState>({\n whenInitial: constant(option.none),\n whenGenerateOtpError: constant(option.none),\n whenRegenerateOtpError: state => state.transactionId,\n whenInsertingOtp: state => state.transactionId,\n whenNoMoreAttempts: state => state.transactionId,\n whenVerifyOtpError: state => state.transactionId,\n })\n );\n\n function errorToBanner(error: OTPError) {\n const message = ((): LocalizedString => {\n switch (error.id) {\n case \"GenericError\":\n case \"InvalidFlowId\":\n return formatMessage(\"GenericError\");\n case \"InvalidOTP\":\n return formatMessage(\"OTPAuthorizationParent.otp.invalidCode\", {\n remainingAttempts: error.attemptsLeft,\n });\n case \"OTPExpired\":\n return formatMessage(\"OTPAuthorizationParent.otp.expiredCode\");\n case \"MaxOtpRequestsReached\":\n return formatMessage(\"OTPAuthorizationParent.otp.maxOTPRequests\");\n case \"MaxOtpAttemptsReached\":\n return formatMessage(\"OTPAuthorizationParent.otp.maxOTPAttempts\");\n }\n })();\n return (\n \n );\n }\n\n const generateOTP = getGenerateOTP({\n ...props,\n onStart: () => dispatch({ type: \"SetOtpPending\", pending: true }),\n onEnd: () => dispatch({ type: \"SetOtpPending\", pending: false }),\n onError: error => dispatch({ type: \"SetGenerateOtpError\", error }),\n onSuccess: (transactionId, remainingOtpRequests) =>\n dispatch({\n type: \"HandleReceiveOTP\",\n transactionId,\n remainingOtpRequests,\n }),\n });\n\n const resendOtp = {\n action: pipe(\n generateOTP,\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n showSnackbar({\n type: \"success\",\n action: option.none,\n message: formatMessage(\"Identification.otp.newCodeSent\"),\n });\n })\n )\n ),\n label: formatMessage(\"Identification.otp.resendCode\"),\n };\n\n const errorBanner = pipe(\n state,\n foldState>({\n whenInitial: constant(option.none),\n whenGenerateOtpError: constant(option.none),\n whenRegenerateOtpError: state => option.some(errorToBanner(state.error)),\n whenInsertingOtp: constant(option.none),\n whenNoMoreAttempts: () =>\n option.some(errorToBanner({ id: \"MaxOtpAttemptsReached\" })),\n whenVerifyOtpError: state => option.some(errorToBanner(state.error)),\n })\n );\n\n const warningBanner = pipe(\n state,\n foldState>({\n whenInitial: constant(option.none),\n whenGenerateOtpError: constant(option.none),\n whenRegenerateOtpError: constant(option.none),\n whenInsertingOtp: s =>\n pipe(\n ,\n option.fromPredicate(constant(s.remainingOtpRequests === 0))\n ),\n whenNoMoreAttempts: constant(option.none),\n whenVerifyOtpError: constant(option.none),\n })\n );\n\n const displayResendCode = pipe(\n state,\n foldState({\n whenInitial: constFalse,\n whenGenerateOtpError: constTrue,\n whenRegenerateOtpError: constTrue,\n whenInsertingOtp: constTrue,\n whenNoMoreAttempts: constTrue,\n whenVerifyOtpError: constTrue,\n })\n );\n\n return (\n \n \n \n {displayResendCode && (\n \n \n {formatMessage(\"OTPAuthorizationParent.otp.notReceivingSMS\")}\n \n \n \n )}\n {pipe(errorBanner, option.toNullable)}\n {pipe(warningBanner, option.toNullable)}\n \n \n );\n}\n"],"sourceRoot":""}