{"version":3,"sources":["StandardLoan/api.ts","StandardLoan/StandardLoanState.ts","StandardLoan/useFlowTypeCases.tsx","StandardLoan/UploadDocuments/api.ts","StandardLoan/UploadDocuments/UploadDocumentItem.tsx","StandardLoan/UploadDocuments/DocumentNote.tsx","StandardLoan/UploadDocuments/OptionalDocumentUploadDialog.tsx","ThirdPartyAppProvider.tsx","StandardLoan/domain.ts","StandardLoan/UploadDocuments/UploadDocumentsSection.tsx","StandardLoan/UploadDocuments/StandardLoanDocumentUploadDialog.tsx","StandardLoan/UploadDocuments/OptionalDocumentsSection.tsx","StandardLoan/StandardLoan.tsx","StandardLoan/UploadDocuments/WaitingUploadedStatusDialog.tsx","StandardLoan/UploadDocuments/UploadDocuments.tsx","StandardLoan/UploadId/UploadId.tsx","StandardLoan/UploadDocuments/UploadDocumentsSubsection.tsx","StandardLoan/UploadDocuments/UploadDocumentItem.treat.ts","StandardLoan/UploadDocuments/UploadDocumentsRework.tsx","StandardLoan/UploadDocuments/NewRequiredDocumentsSection.tsx","StandardLoan/UserValidationWrapper.tsx","StandardLoan/useSteps.tsx","StandardLoan/useCheckDay.ts","StandardLoan/VirtualCards/VirtualCardsSL.tsx"],"names":["LoanOfferWithLimits","t","amount","NonNegative","apr","PercentageLikeFromNumber","currency","Currency","bankingFee","installment","interestRate","minAmount","maxAmount","minTenor","PositiveInteger","maxTenor","tenor","totalAmount","totalToPay","insurance","CreditProtectionInsuranceType","LoanOffer","GenericLoanOfferType","COUNTER_OFFER","EXTENDED_DURATION","HIGHER_AMOUNT","CUSTOMER_OFFER","GenericLoanOffer","optionFromUndefined","borrowedAmount","cpimonthlyAmount","withFallback","optionFromNullable","Positive","option","none","cpiSelectedName","RuntimeLocaleKey","currencyCode","installmentAmount","interestRateDecimal","offerType","rspn","monthlyPayment","totalPayableAmount","refinancingAmount","newMoneyAmount","GenericLoanOffers","SALARY_TRANSFER_OFFER","NO_SALARY_TRANSFER_OFFER","WayOfIdentification","REMOTE","IN_PERSON","UNKNOWN","InnerPreapprovedOutput","limittype","interestrate","maximuminstallment","maximumpreapprovedlimit","maximumpreapprovedtenor","minimumproductlimit","minimumproducttenor","predictedamount","predictedexpenses","predictedincome","predictedtenor","upfrontfee","TLProductType","producttype","CLProductType","TLAndCLLimits","TL","CL","GetPreapprovedLimitsOutput","preapprovedLimits","getPreapprovedLimits","apiCall","inputEq","eq","fromEquals","constFalse","path","inputCodec","outputCodec","GenericLoanResponseOutput","feeIncluded","refinancedAmountExternal","monthlyInsuranceAmount","installmentDay","PositiveIntegerFromString","installmentDayList","nonEmptyArray","maxAllowedAmount","genericLoanOffers","wayOfIdentification","salaryTransfer","productType","ApplicationProductType","disbursementAccount","NonEmptyString","allPrestoSelected","refinancedInternalCCOVD","displayMinTenorInfoLabel","minTenorForPreapproved","eligibleForPreapproved","cpiEligibleByAge","bankingFeeIncluded","stepSizeAmount","stepSizeTenorMonths","UpdateOfferStatus","OK","EXPOSURE_EXCEEDED","REFINANCED_CREDITS_LIMIT_EXCEEDED","GENERIC_PCE_ERROR","UpdateCustomerOffer","genericLoan","cpiPackageList","CPIPackageList","updateOfferStatus","LoanUpdateInput","eqLoanUpdateInput","getStructEq","getEq","eqNumber","updateLoanOffer","errorCodec","UnderAgeError","setSelectedInsurance","SelectedInsurance","success","initCustomer","initCustomerOffer","CustomerOfferUpdateInput","eqCustomerOfferUpdateInput","eqBoolean","eqStrict","updateCustomerOffer","SalaryTransferOfferType","SelectedCustomerOfferInput","salaryTransferOfferKey","eqSelectedCustomerOfferInput","eqString","saveSelectedCustomerOffer","checkClientExisting","CheckExistingClientInput","eqCheckExistingClientInput","CheckExistingClientOutput","isExistingClient","existingClient","EmailUploadLinkData","bankerFlowId","UUID","applicationId","UploadLinkDataStatus","LINK_DATA_NOT_FOUND","LINK_EXPIRED","UPLOAD_CONFIRMED","RestoreByClientOutput","emailUploadLinkData","status","restoreByClient","linkId","checkExistingApplicationOutput","appInitiatedBySame3PUserId","applicationExists","initDefaults","fee","maxBorrowedAmount","initDefaults3P","startApplication","checkExistingApplication","openClient","PersonalInfoSubmitInput","idType","DocumentPurpose","personalInfoSubmit","PersonalInfoError","extractClientData","ClientDataInput","eqClientDataInput","ClientDataOutput","sendMemorandum","CreditChecksApproved","CreditChecksRejected","PersonalDataNotReadyResult","PersonalDataApprovedOutput","personalData","PersonalDataFromOutput","result","PersonalDataRejectedOutput","PersonalDataOutput","StartLoanApplicationInput","nrkiConsent","srbiConsent","telcoConsent","solusConsent","StartLoanApplicationError","translationsKey","StartLoanApplicationRejectedError","errorMessages","StartLoanApplicationSuccess","applicationNumber","StartLoanApplicationOutput","CreditBureauPendingStatus","cbResultReady","CreditBureauRejectionStatus","cbDecision","CreditBureauApprovalStatus","hasRefinancingCredits","hasRepaidLoans","CreditBureauStatus","foldCreditBureauStatus","matches","whenRejected","whenApproved","whenPending","checkCreditBureauStatus","startLoanApplication","AdditionalIncomeRecord","Employment","IncomeFromAbroad","SelfEmployed","Pensioner","MaternityLeave","GovernamentalPension","MilitaryAid","Level3HandicapPension","RentalIncome","Alimony","additionalIncome","IncomeOutput","AdditionalIncomeRecordId","recordId","AdditionalIncomeStatusOutput","statusCode","additionalIncomeAdd","additionalIncomeEdit","additionalIncomeRemove","AdditionalIncomeLFDecision","Approved","Rejected","Counteroffer","Pending","AdditionalIncomeProceedNextOutput","lfDecision","additionalIncomeNext","sendAdditionalIncome","AdditionalIncomeListOutput","additionalIncomeList","incomeOptions","IncomeOptionsOutput","mainSourceOfIncome","IncomeSourceType","mainSpecialTypeOfIncome","SpecialIncomeSourceType","constTrue","BonitaResponseOutput","submitExpensesResponse","SubmitExpensesResponse","proceedWithAdditionalIncomeResponse","bonitaStatus","BonitaStatus","getBonitaStatus","PersonalAndTaxInfo","politicallyExposedPerson","taxPayerOutsideCzechRepublic","otherTaxPayerCountries","TaxPayerCountry","usCitizenOrTaxPayer","ssn","specialRelationships","riskyActivities","industry","Industry","secondCitizenship","AllCitizenships","TransactionsInfo1","paymentDestination","PaymentDestination","paymentDestinationLabel","LocalizedString","paymentDestinationCountries","transactionType","TransactionType","transactionTypeLabel","cashTransactionMotivation","TransactionsInfo2","averageMonthlyIncomePayments","AverageIncomingPayments","PaymentDestination2","paymentDestinationCountriesWithLabels","Country","reasonOfTransactions","sourceOfFunds","SourceOfFunds","sourceOfIncome","SourceOfIncome","employerName","companyICO","TransactionsInfo","StandardLoanKYCAnswers","transactionsInfo","personalAndTaxInfo","SubmitKYCInput","answers","eqSubmitKYCInput","SubmitKYCOutput","needsMicropayment","submitKYC","deleteApplication","saveApplication","closeApplication","GetApplicationIdOutput","getApplicationId","ExitProcessReason","REPAYMENTPERIOD","BOTH","NONE","ExitProcessInput","reason","reasonDetails","eqExitProcessInput","exitProcess","LoanType","LOAN","CREDIT_CARD","OVERDRAFT","LoanItem","type","originalAmount","MoneyAmount","remainingAmount","LoanItemRework","InternalLoanItem","selectedForRefinance","startDate","DateFromISOString","InternalLoanItemRework","ExternalLoanItem","creditCardNumber","creditor","creditorCode","variableSymbol","accountForDisbursment","selectedForRepaid","RepaidLoanItem","ExternalLoanItemRework","InternalLoansList","liabilitiesList","InternalLoansListRework","ExternalLoansList","ExternalLoansListRework","AccountsForRefinancingOutput","accountNumber","accountCurrency","internalLoans","externalLoans","getAccountsForRefinancing","RepaidLoansOutput","getRepaidLoans","RefinancingListLoanItem","RefinancingLoanList","RefinancingLoanListOutput","refinancedAmountInternal","refinancingLoanList","FollowUpPreliminaryStatusOutput","NOK","followUpPreliminaryStatus","Credentials","password","pin","userId","eqCredentials","SubmitCredentialsInput","profile","eqSubmitCredentialsInput","submitCredentials","ClientStatus","PENDING","DONE","ERROR","ClientStatusErrorId","RiskyClient","KycAssessmentNotAvailable","KycAssessmentResultNotAvailable","ClientStatusOutput","id","message","getClientStatus","SignatureStatus","SignatureStatusOutput","signatureStatus","getSignatureStatus","RemoteSignatureStatus","SIGNING","getKnowYourCustomerStatus","contractRead","ContractReadInput","eqContractReadInput","ContractReadOutput","termsAndConditionsReceived","TermsAndConditionsReceivedOutput","marketingConsent","MarketingConsentReadInput","eqMarketingConsentReadInput","preContractualDocuments","PreContractualDocumentsListOutput","termsAndConditions","TermsAndConditionsOutput","phoneNumber","PhoneNumberOutput","LFStatus","AuthorizeWithOTPOutput","authorize","remainingRequests","NonNegativeInteger","transactionId","lfStatus","authorizeWithOTP","OtpGenerationInput","eqOtpGenerationInput","OtpGenerationError","GenericError","RemoteSignatureStatusOutput","getRemoteSignatureStatus","GenerateOTPOutput","generateOtp","otpVerify","eqOtpVerifyInput","OtpVerifyInput","OtpVerifyError","generateIdentificationOtp","OtpGenerationInputBase","eqOtpGenerationInputBase","OTPGenerationOutputBase","OtpGenerationErrorBase","eqWithCoapplicantOtpVerifyInput","eqWithCoApplicant","otp","verifyIdentificationOtp","OtpVerifyInputBase","OtpVerifyErrorBase","checkAuthorizationOTP","MicroTransactionDataOutput","bankCode","bankName","prefixCode","IncomeAndPersonalData","income","IncomeAndPersonalDataDTO","OfferTypeDecision","OfferTypeOutput","CoreCalendar","days","month","year","getCoreCalendar","RestoreNewestLoanApplicationCreditChecksStepOutput","festep","additionalQuestionsCPIRequest","CPIAdditionalQuestions","allPreApprovedLimitsResponse","genericLoanResponse","RestoreNewestLoanApplicationReviewInformationStepOutput","startStandardLoanApplicationRequest","FinalizeOfferToAdditionalIncomeSteps","FINALISE_OFFER_MAIN_SCREEN","EXPENSE","ADDITIONAL_INCOME","RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput","incomeAndPersonalData","creditBureauStatusResponse","ChooseOfferToKycSteps","CHOOSE_OFFER","REVIEW_OFFER","KYC","RestoreNewestLoanApplicationChooseOfferToKycStepsOutput","proceedNextResponse","RestoreNewestLoanApplicationMicroPaymentStepOutput","personalDataResponse","StandardLoanKycOutput","StandardLoanKycRequest","RestoreNewestLoanApplicationPersonalDataStepOutput","standardLoanKycRequest","RestoreNewestLoanApplicationOtherSteps","PACKAGE_SELECTION","VIRTUAL_CARDS","ACCOUNTS_FOR_REFINANCING","REPAID_LOANS","CLIENT_CREDENTIALS","UPLOAD_DOCUMENTS","SIGNATURE","FINAL_PAGE","UNDER_REWORK","AUTHORIZE_PUSH","REMOTE_SIGNATURE","RestoreNewestLoanApplicationOtherStepsOutput","microTransactionData","personalDataConfirmation","primary","ClientDataOCR","secondary","RestoreNewestLoanApplicationOutput","cardProviderChange","ParallelFlowParameters","hasCAFlowInProgress","hasCAFlowSentToBO","hasCFFlowSentToBO","date","existingApplicationId","hasParallelFlow","NewestApplicationInProgressOutput","responseWithDifferentBroker","parallelFlowParameters","restoreData","ApplicationStatus","CheckClientAge","underAge","checkMinimumAge","checkForeign","ExistingClientCheckNotesCF","hasBlockingNotes","checkNotes","CheckPrimaryIdEnumsCF","CheckPrimaryIdEnums","UPDATE_PASSWORD","UPDATE_ID_CONTACTS_PASSWORD","UPDATE_ID_PASSWORD","UPDATE_ID_OTHER_THAN_AUTH_ID","UPDATE_ID_MISSING_INFORMATION","existingClientPrimaryIdCheck","ExistingClientCheckKycCF","kycNeeded","highRisk","foreign","existingClientKYCCheck","ExistingClientCheckPhoneAndEmail","phoneNumberNeeded","emailAddressNeeded","existingClientPhoneAndEmailCheck","RestoreErrorKeys","TOO_EARLY","RestoreError","newestApplicationInProgress","DeleteSavedApplicationRequest","processId","deleteExistingApplication","RestoreNewestApplicationInput","restoreWithDialog","restoreNewestApplication","SectionType","MainIncome","AdditionalIncome","Refinancing","OptionalDocuments","NewRequiredDocuments","DocumentMetadata","applicationElementID","clientID","documentTypeID","documentTypeName","section","translationCode","UploadedDocumentData","subSection","metadata","docId","mimeType","DocumentMime","documentName","requiredDocumentStatus","NEW","UPLOADED","UPLOADED_BY_CLIENT","UPLOADING","UPLOADING_BY_CLIENT","SEALING","uploadedTimestamp","uploadNote","oldDocId","uniqueLfId","appStateRequiredDocuments","appStateRequiredDocumentsReviewOffer","requiredDocuments","previewRequiredDocuments","CheckUploadChangesOutput","uploadChanges","uploadConfirmed","checkUploadChanges","RequiredDocumentMetadata","UploadDocumentInput","documentContent","CompressedFileContent","filename","requiredDocumentMetadata","CheckOptionalDocumentInput","documentTypeId","CheckNewOptionalDocumentInput","ConfirmDocumentUploadInput","CheckNewRequiredDocumentInput","UploadLinkDataPollingStatus","BANKER_INFO_UNCHANGED","BANKER_INFO_NOT_FOUND","BANKER_INFO_CHANGED","GetLinkDataOutput","GetLinkDataPollingOutput","uploadDocument","UploadDocumentOutput","uploadDocumentByClient","confirmDocument","ConfirmDocumentUploadOutput","confirmDocumentByClient","confirmPOIByClient","checkOptionalDocument","checkOptionalDocumentByClient","checkNewOptionalDocument","checkNewOptionalDocumentByClient","confirmOptionalDocumentUpload","confirmOptionalDocumentUploadByClient","cancelOptionalDocUpload","cancelOptionalDocUploadByClient","removeOptionalDoc","removeOptionalDocByClient","checkNewRequiredDocument","checkNewRequiredDocumentByClient","confirmNewRequiredDocumentUpload","confirmNewRequiredDocumentUploadByClient","cancelNewRequiredDocUpload","cancelNewRequiredDocUploadByClient","removeNewRequiredDoc","removeNewRequiredDocByClient","saveEmailUploadLinkData","getLinkData","getLinkDataPolling","reassignEmailFlow","cancelUpload","cancelUploadByClient","sendLinkToClient","removeDocumentByClient","removeDocument","CheckRequiredDocumentsStatus","requiredDocumentsReceived","checkRequiredDocuments","CreditorData","code","name","LoanProviderOutput","loanProviderList","loanProviders","SelectLoanForRefinancingInput","SelectLoanForRefinancingOutput","maxLoanAmount","selectLoanForRefinancing","LoanProviderSelectedInput","LoanProviderSelectedOutput","accountForDisbursmentHint","variableSymbolHint","accountReadonly","eqLoanProviderSelectedInput","loanProviderSelected","submitAccountsForRefinancing","submitRepaidLoans","LTVWithinLimitsStatus","IncomeAndPersonalDataOutput","needAdditionalIncomeStep","isReworkDoPolling","ltvWithinLimitsStatus","hasAdditionalIncome","confirmIncomeAndPersonalData","resetCredentialsProcess","SendPushOutput","smartKeyApi","applicationRejected","authorizeWithPush","GenerateQRCodeError","error","UserBlocked","ApplicationRejected","GenerateQRCodeOutput","generateAuthorizationQR","PersonalDataOptionsNotReadyResult","PersonalDataAttemptsExceededOutput","PersonalDataOptionsApprovedOutput","personalDataOptions","PersonalDataOptionsRejectedOutput","PersonalDataOptionsOutput","getPersonalDataOptions","getIncome","AccCollectionErrorCode","DisbursementAccountsError","getDisbursementAccounts","KycNeeded","isKycNeeded","ExternalLiabilitiesSelected","externalLiabilities","areExternalLiabilitiesSelected","CBRejectedOutput","cbRejected","getIsCBRejected","LTVWithinLimitsOutput","checkLtvWithinLimits","setDisbursementAccount","GetApplicationOutput","loanType","getApplicationWithRestoreDataAndRestore","getLastSavedLoan","CheckApplicationStatusOutput","rejected","checkApplicationStatus","SLResultsMicropayment","SLResultsPending","SLResultsFailure","SLResultsRejected","SLResultsRedirectToTheBank","SLResultsContinue","SLResultsNotifyClientOfDelay","SLResultsNotifyClientOfDelayWithErrors","SLResultsSuccess","stepsResults","SUCCESS","SLResultsOutput","slResults","SignatureType","OtpSms","Click2Sign","SignatureTypeOutput","signatureType","getSignatureType","GetBrokersInput","partialEmail","eqGetBrokersInput","GetBrokersOutput","getBrokers","getAssignedBrokerForBanker","AssignedBrokerForBanker","saveAssignedBrokerForBankerInput","email","eqSaveAssignedBrokerForBankerInput","saveAssignedBrokerForBankerOutput","saveAssignedBrokerForBanker","removeAssignedBrokerForBanker","ApplicationLockedInput","ApplicationLockedOutput","locked","isApplicationLocked","linkGenerationNow","eqLinkGenerationInput","LinkGenerationInput","LinkGenerationOutput","LinkGenerationError","packagesList","PackageListResponse","GetListError","choosePackageType","ChoosePackageTypeInput","transitionToMasterCard","initVirtualCard","InitVirtualCardResponse","savePhysicalCardValue","PhysicalCardInput","virtualCardNext","needsCaptcha","NeedCaptchaOutput","loading","landing","verifyPhoneAndEmail","loanOffer","payload","select3P","existingClientSuspense","isApplicationExisting","creditChecks","initialConsent","rework","cpiAdditionalQuestions","restoreApplication","customerOffer","checkAdditionalIncomes","needsAdditionalIncome","expensesAndAdditionalIncome","saveCustomerOfferSuspense","offerList","offerReview","selectedOffer","offerReviewPush","isRemoteSignature","packageSelection","virtualCard","accountsForRefinancing","showVirtualCard","repaidLoans","kyc","reloadSuspense","afterSignature","shouldAskCredential","restoredData","micropayment","followUpAndSignature","rejectionReason","summary","hasRefinancing","errorAction","uploadDocuments","requiredDocumentsUpToDate","foldState","state","goBackAction","goToStepAction","step","landingAction","reloadAction","verifyPhoneAndEmailAction","select3PAction","uploadIdAction","existingClientSuspenseAction","creditChecksAction","existingClientAction","existingApplication3PErrorAction","restoreApplicationAction","applicationLockedAction","customerOfferAction","startLoanApplicationConsent","expensesAndAdditionalIncomeAction","restoredPersonalDataOptions","fromBack","expensesAndAdditionalIncomeAction2","expensesAndAdditionalIncomeReworkAction","saveCustomerOfferSuspenseAction","offerListAction","offerListReworkAction","checkExpensesOffersAction","sendAdditionalIncomeAction","offerReviewAction","packageSelectionAction","chosenCard","virtualCardAction","accountsForRefinancingAction","repaidLoansAction","kycAction","micropaymentAction","micropaymentOverviewAction","followUpAndSignatureAction","askForCredentials","rejectAction","summaryAction","maxNumberChangesReachedAction","uploadDocumentsAction","restoreStepAction","applicationStatus","emptyRework","needContractsUpdate","reworkSteps","oldValues","newValues","reworkAll","emptyParallelFlowParams","reducer","action","restoreState","some","navigateReworkStep","isErrorFetchingRestoredData","checkExpensesOffers","undefined","pipe","boolean","fold","isSome","value","shouldShowFormsOnExit","isCreditChecksConfirmed","reasonNotSavedOnExit","handleRejectableSteps","nextState","getOrElse","fromPredicate","decision","map","constant","getHasRefinancingCredits","getHasRepaidLoans","kycReq","of","_","toLfStatus","steps","reworkStep","creditBurauResponse","direction","index","findIndex","reworkStepsContainStep","stateToReworkStepName","length","stepToRestore","extractedData","chain","pd","documentPayload","mergeExtractDataDocumentsOutput","document","canUploadAgain","canEdit","showWarning","fraudCheck","useFlowTypeCases","flowType","apiParameters","tenant","useAppContext","isPWSRemote","isTLS","is3P","isInPerson","isTLSorPWSRemoteAndCZ","isTLSorPWSRemoteAndSK","confirmUpload","CheckDisplaySmsLinkOptionOutput","displaySmsLinkOption","CheckDisplaySmsLinkOptionInput","checkDisplaySmsLinkOption","DownloadItem","props","isMobileLayout","useIsMobileLayout","formatMessage","useFormatMessage","isDownloadDialogOpen","setDownloadDialogOpen","useState","isRemoveDialogOpen","setRemoveDialogOpen","useCommand","getDocumentContentSL","isSafari","useDeviceUA","download","documentID","documentId","taskEither","docContent","url","convertToBlob","content","downloadFile","column","grow","shrink","vAlignContent","className","classes","variant","size","label","unsafeLocalizedString","uploadedDate","moment","format","messageTimeFormat","documentMime","constVoid","getOnlyDownloadMimes","includes","units","onClose","title","onDismiss","onCancel","onConfirm","onRemoveItem","cancelLabel","confirmLabel","UploadItem","uploadButton","icon","UploadIcon","onSelectItem","uploading","weight","color","palette","neutral700","foldRequiredDocumentStatus","whenNew","whenUploaded","whenUploadedByClient","whenUploading","whenUploadingByClient","whenSealing","UploadDocumentItem","showMandatoryError","DocumentNote","note","OptionalDocumentUploadDialog","mobileUploadEnabled","ThirdPartyAppProvider","channel","authInfo","potentialClientToken","showPasswordWasResetMessage","render","passwordWasChanged","children","StandardLoanFlowType","InPerson","TLSAgent","HomeBanking","SmartBanking","PWSRemote","foldFlowType","whenHomeBanking","whenSmartBanking","when3P","whenInPerson","whenTLSAgent","whenPWSRemote","shouldAskCompany","exists","item","getTypeOfProductLabel","product","foldLiabilitiesVariant","match","onMtg","onCf","onOvd","AssignedBrokerForBankerInfo","firstName","lastName","brokerageCompany","brokerInfo","mapSignatureToExistingClientAuthMethod","defaultAuthenticationMethod","UploadDocumentsSection","subSections","found","forEach","push","extractSubSectionsFromSection","getSectionLabel","sectionName","filter","subSectionName","onSelectDocument","onRemoveDocument","StandardLoanDocumentUploadDialog","useQuery","api","docTypeId","remoteData","constNull","OptionalDocumentsSection","renderAddOptionalDocument","PlusIcon","onAddNewOptionalDocument","renderDocumentItemAndNote","StandardLoan","startNewFlow","useAuthenticationContext","isInPersonChannel","useIsInPersonChannel","is3PChannel","useIs3PChannel","isExiting","setIsExiting","setIsCreditChecksConfirmed","currentLoanOffer","setCurrentLoanOffer","initialLoanOffer","dispatch","useReducer","setExistingClient","restoreDataObject","r","incomeSourceType","setIncomeSourceType","config","unicreditBranchesMapURL","enableVirtualCardsLoanImpl","verifyOtp","getNewestApplication","deleteCurrentApplication","sendFeedback","getReworkDetails","reworkApi","getReworkOldValues","getClientExisting","uploadDocumentsApi","getRequiredDocumentsReceived","savePhysicalCard","isClientFlow","clientExists","isRework","getSteps","goToStep","useSteps","stepVisibility","stepVisibilityFromReworkSteps","window","onunload","dispatchWithRejectionCheck","fromIO","handleKyc","authenticationMethod","handleAccountsForRefinancingAndKYC","handleAfterOfferReview","handlePackageSelection","handleError","errors","navigateToFindBranches","location","href","dispatchFirstStep","startCreditChecks3PExistingClient","getReworkData","dispatchRework","SLApplicationStatusFinished","is","isApplicationFinished","onRestoreApplication","checkRestoredData","restoreDataOption","checkNewestApplication","restoreDataWrapper","correctRestoreData","correctApplicationStatus","right","startCreditChecks","data","checkParallelFlow","bimap","startCreditChecks3P","parallelFlowParams","params","restoreDataType","reworkData","feStep","response","retrieveIsKycNeeded","useEffect","foldRestoreDataType","onById","onLatest","goToCreditChecksWithMemorandum","landingStep","show3P","GDPR_STATE","gdprType","Loading","NO","Error","ApplicationLocked","ExistingApplication3PError","Landing","AddPhoneNumber","PhoneAndEmailVerification","MaxNumberChangesReached","UploadID","ExistingClient","ExistingClientSuspense","FollowUpAndSignature","AccountsForRefinancing","YES","RepaidLoans","CheckAdditionalIncomes","CheckExpensesOffers","CreditChecks","VirtualCard","CustomerOffer","ExpensesAndAdditionalIncome","Micropayment","MicropaymentOverview","OfferList","OfferReview","OfferReviewPush","PackageSelection","SendAdditionalIncome","PersonalData","ReloadSuspense","RestoreApplication","SaveCustomerOfferSuspense","Select3P","UploadDocuments","PAPER_BASED","AfterSignature","Summary","gdprDialogDisplayed","setGdprDialogDisplayed","showGdprDialog","skipValidation","isProspectClient","onExit","hAlignContent","keepClient","onContinue","onAgeValidationFail","onBack","phoneAndEmailVerificationState","coApplicant","initialPromoCode","onComplete","onPhoneVerified","readerTaskEither","fromTaskEither","mapLeft","defaultOffer","initialOffer","offer","generateOTP","verifyOTP","hideInstructions","onMaxNumberChangesReached","contactType","operationType","process","onRefuse","onFailure","isThirdParty","onSuccess","on3PExistingClient","s","onRequestFailure","hasPasswordForCommunication","isPhoneNumberVerified","onNext","consents","hasCounterOffer","onApplicationRejected","onCreditChecksConfirmed","onChangeIncomeSourceType","onClientExists","onNotRestore","loanAmount","instalment","onRestore","isCredentialsAndSigningRemote","isApplicationSaved","onExposureExceeded","restoredAdditionalQuestions","onRejected","onCounterOffer","onPending","showAdditionalIncomeStep","onFinish","hasIncomes","onError","onApproved","flow","chosenPackage","onPackageConfirm","packageType","onChooseCard","child","isCf","onSubmit","onChange","checkboxValue","physicalCardSelected","mainIncomeSource","onReload","list","onRetrySignature","renderChild","onRemoteCredentialsExit","onAfterSignature","credentialStatus","onGotoClientsPage","goToClient","goToMicroPayments","onGoHome","onNextWithoutConfirm","clientData","heading","subheading","actions","paperBased","backgroundImageURL","onLogoClick","iconAction","headerActionIcon","onStepClick","inAuthenticatedPage","onExitAction","onProcessExit","convertReworkStepArray","convertReworkStepToState","WaitingUploadedStatusDialog","usePollingEffect","uploadApi","intervalMS","shouldPollingContinue","SpinnerIcon","UploadRequiredDocuments","UploadDocumentsNotReworkWithCheck","requiredDocumentsAvailable","UploadDocumentsNotRework","refreshList","documents","toNullable","formSubmitted","setFormSubmitted","confirmDocumentUpload","confirmOptionalDocument","cancelOptionalDocument","removeOptionalDocument","isLinkSent","setIsLinkSent","sentLinkConfirmation","showSentLinkConfirmation","uploadDialogDocument","setUploadDialogDocument","uploadNewOptionalDocumentDialog","setUploadNewOptionalDocumentDialog","r6Enabled","disabled","isNone","onDocumentUpload","file","checkFileSize","either","chainW","trim","endsWith","decodeFileType","fromEither","fileType","encodeFileToBase64","fileBase64","scope","fileContent","left","submitResult","fromIOEither","mapSubmitDocumentStatus","onDocumentConfirm","mapSubmitNoteStatus","onDocumentCancel","fileSize","getFileSizeMax","loadingError","renderOptionalSection","renderSendUploadLink","align","buttonLink","hideOnMobile","subtitle","cta","style","flexBasis","extractSectionsFromDocuments","sections","divider","array","renderNonOptionalSections","labels","normal","emptyDocs","leftIO","maxLengthNote","selectedApplicant","selectedMainApplicant","skipNotes","acceptableFileTypes","fileTypes","fileSizeMax","toUndefined","isNoteMandatory","fromArray","UploadId","enableThirdPartyBranchSelection","clientExistenceCommand","isBelow18","setIsBelow18","clientExistenceCheck","useClientExistencyCheck","genericError","editData","documentIdentificationFlow","extractData","rejectData","checkBelow18","dateOfBirth","Date","getFullYear","fromOption","clientExistencyCheckData","personalNumberMatch","userID","multipleUsers","onShouldClientContinue","clientExistencyCommand","submitConfirmedDataCommand","confirmedData","documentsMismatch","onMismatchDialogDismiss","showMismatchDialog","onReset","checkOpuAndCex","editPersonalInfoCommand","submitResidencyCommand","showBranchSelection","CloseIcon","UploadDocumentsSubsection","button","UploadDocumentsRework","RefreshDocumentsWithAppState","LoadingWrapped","LoadingError","RefreshDocumentsWithCheckIfReady","documentsRefreshed","setDocumentsRefreshed","showError","setShowError","confirmNewRequiredDocument","cancelNewRequiredDocument","removeNewRequiredDocument","uploadOptionalDocumentDialog","setUploadOptionalDocumentDialog","uploadNewRequiredDocumentDialog","setUploadNewRequiredDocumentDialog","onNewRequiredDocumentUpload","onOptionalDocumentUpload","onOptionalDocumentConfirm","onNewRequiredDocumentConfirm","getDocumentsBySection","renderNewRequiredDocumentsSection","stepComments","comments","useRemoteData","useMemo","reworkCategories","reworkComments","areReworkComments","reworkBanner","changes","hideChangesSection","forceDisplayComments","renderRequiredDocuments","NewRequiredDocumentsSection","UserValidationWrapper","authMethod","isModal","dialogTitle","onDialogDismiss","onDialogExit","validateUser","details","hasSecurityDetails","hasEmailAddress","hasPhoneNumber","defaultFixedStepDefinition","visible","defaultNonFixedStepDefinition","reverse","identity","stepsDefinition","setStepDefinition","setStepVisibility","stepName","visibility","foldDefinition","foldStepDefinition","currentStepOrEquivalent","findFirst","currentStepName","visibleSteps","currentStepIndex","zipper","slice","makeZipper","stepIndex","useCheckDay","dayTypeInfo","setDayTypeInfo","dayType","isWorkingDay","getCalendar","checkCurrentDay","today","day","parseInt","currentMonthInfo","find","foldStatus","whenLoading","whenReady","refresh","VirtualCardsSL","enableMastercardImpl","getFeatureWhitelist","uKontoApi","mastercardWhitelist","setMastercardWhitelist","showMastercard","feature","isMasterCardWhitelisted","isFromChild"],"mappings":"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I,wBACA/G,sBACA0G,WAoBC,SAASM,EACdb,EACAnF,EACA3d,EACAC,EACAmjB,EACAE,EACAI,EACA/G,EACA0G,GAEA,MAAO,CACL7b,KAAM,8BACNub,QAAS,CACPD,YACA9iB,wBACAC,iBACA0d,sBACAyF,iBACAE,yBACAI,wBACA/G,sBACA0G,WAmBC,SAASO,EACdnuB,EACAqtB,EACAnF,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,4BACNub,QAAS,CACPttB,YACAqtB,YACAnF,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WAmBC,SAASQ,EACdpuB,EACAqtB,EACAnF,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,YACNub,QAAS,CACPttB,YACAqtB,YACAnF,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WA4FC,SAASS,EACdruB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,cACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WAsBC,SAASW,EACdvuB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,EACAnqB,EACA+qB,GAEA,MAAO,CACLzc,KAAM,kBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,SACAnqB,sBACA+qB,sBAoBC,SAASC,EACdzuB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,mBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WAoBC,SAASc,EACd1uB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,cACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WAoBC,SAASe,EACd3uB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,EACAgB,GAEA,MAAO,CACL7c,KAAM,yBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,SACAgB,oBAoBC,SAASC,EACd7uB,EACAqtB,EACAiB,EACApG,EACA3d,EACAojB,EACAE,EACAD,EACAgB,GAEA,MAAO,CACL7c,KAAM,cACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAojB,iBACAE,yBACAD,SACAgB,oBAuBC,SAASE,EACd9uB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAqjB,EACAF,EACAvd,EACAwd,EACAgB,GAEA,MAAO,CACL7c,KAAM,MACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACA/jB,wBACAC,iBACA0d,sBACAyF,iBACAE,yBACAzd,mBACAuY,aAAa,EACbiF,SACAgB,oBAsBC,SAASG,EACd/uB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAqjB,EACAF,EACAvd,EACAwd,GAEA,MAAO,CACL7b,KAAM,iBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACA/jB,wBACAC,iBACA0d,sBACAyF,iBACAE,yBACAzd,mBACAuY,aAAa,EACbiF,WAwBC,SAASoB,EACdhvB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAme,EACAgF,EACAE,EACAD,EACAqB,EACAC,EACA1X,GAEA,MAAO,CACLzF,KAAM,iBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAme,cACAgF,iBACAE,yBACAD,SACAqB,sBACAC,eACA1X,aAoBC,SAAS2X,EACdnvB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAmjB,EACAE,EACAD,GAEA,MAAO,CACL7b,KAAM,eACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAmjB,iBACAE,yBACAD,WA+BC,SAASwB,EACdpvB,EACAqtB,EACAiB,EACApG,EACA3d,EACAC,EACAme,EACAgF,EACAE,EACAD,EACAqB,EACAC,GAEA,MAAO,CACLnd,KAAM,uBACNub,QAAS,CACPttB,YACAqtB,YACAiB,gBACApG,sBACA3d,wBACAC,iBACAme,cACAgF,iBACAE,yBACAD,SACAqB,sBACAC,iBAyCC,SAASxF,EAAS2F,GACvB,MAAO,CACLtd,KAAM,WACNub,QAAS,CAAE+B,oBAaR,SAASC,EACd/rB,EACAgsB,EACA/X,GAEA,MAAO,CACLzF,KAAM,UACNub,QAAS,CAAE/pB,cAAagsB,iBAAgB/X,aAuBrC,SAASgY,EAAY9Z,GAC1B,MAAO,CACL3D,KAAM,QACNub,QAAS,CAAE5X,YAiBR,SAAS+Z,EACdlsB,EACAgsB,EACA/kB,EACAgN,EACA6V,EACAO,EACA8B,GAEA,MAAO,CACL3d,KAAM,kBACNub,QAAS,CACP/pB,cACAgsB,iBACA/kB,iBACAgN,WACA6V,YACAO,SACA8B,8BAsEC,SAASC,EACdhlB,GAIA,OAAOilB,GAASjlB,EAAQilB,EAAM7d,MAAM6d,GAO/B,SAASC,IACd,MAAO,CAAE9d,KAAM,UA6BV,SAAS+d,EAAeC,GAC7B,MAAO,CAAEhe,KAAM,WAAYge,QAOtB,SAASC,IACd,MAAO,CAAEje,KAAM,WAOV,SAASke,IACd,MAAO,CAAEle,KAAM,UAUV,SAASme,EACd7C,GAEA,MAAO,CAAEtb,KAAM,sBAAuBub,QAAS,CAAED,cAU5C,SAAS8C,EAAe9C,GAC7B,MAAO,CAAEtb,KAAM,WAAYub,QAAS,CAAED,cAQjC,SAAS+C,EAAe/C,GAC7B,MAAO,CAAEtb,KAAM,WAAYub,QAAS,CAAED,cAQjC,SAASgD,EACdhD,EACAI,GAEA,MAAO,CACL1b,KAAM,yBACNub,QAAS,CAAED,YAAWI,0BAWnB,SAAS6C,EAAmBjD,GACjC,MAAO,CACLtb,KAAM,eACNub,QAA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","file":"static/js/index~add2cb7f.85d20d31.chunk.js","sourcesContent":["import { apiCall } from \"../APICall\";\nimport { eq, option } from \"fp-ts\";\nimport { constFalse, constTrue } from \"fp-ts/function\";\nimport * as t from \"io-ts\";\nimport {\n CompressedFileContent,\n Currency,\n DocumentPurpose,\n eqWithCoApplicant,\n GenericError,\n MoneyAmount,\n NonNegative,\n optionFromUndefined,\n PercentageLikeFromNumber,\n PositiveInteger,\n} from \"../globalDomain\";\nimport {\n CheckExistingClientInput,\n CheckExistingClientOutput,\n eqCheckExistingClientInput,\n} from \"../IdUpload/ClientData/api\";\nimport {\n AllCitizenships,\n ClientDataOCR,\n PersonalInfoError,\n} from \"../IdUpload/domain\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { nonEmptyArray } from \"io-ts-types/nonEmptyArray\";\nimport {\n LocalizedString,\n NonNegativeInteger,\n Positive,\n PositiveIntegerFromString,\n} from \"design-system\";\nimport { optionFromNullable } from \"io-ts-types/lib/optionFromNullable\";\nimport {\n AverageIncomingPayments,\n Country,\n Industry,\n PaymentDestination,\n PaymentDestination2,\n SourceOfFunds,\n SourceOfIncome,\n TaxPayerCountry,\n TransactionType,\n} from \"../KYC/domain\";\nimport { Eq } from \"fp-ts/Eq\";\nimport {\n ContractReadInput,\n ContractReadOutput,\n eqContractReadInput,\n eqMarketingConsentReadInput,\n MarketingConsentReadInput,\n PhoneNumberOutput,\n PreContractualDocumentsListOutput,\n TermsAndConditionsOutput,\n TermsAndConditionsReceivedOutput,\n} from \"../Common/PreContractualDocuments/api\";\nimport {\n eqOtpGenerationInput,\n eqOtpVerifyInput,\n OtpGenerationError,\n OtpGenerationInput,\n OtpVerifyError,\n OtpVerifyInput,\n} from \"../OTP/domain\";\nimport { DateFromISOString } from \"io-ts-types/lib/DateFromISOString\";\nimport { PersonalDataFromOutput } from \"./Confirmation/domain\";\nimport { RuntimeLocaleKey } from \"../intl\";\nimport {\n CPIAdditionalQuestions,\n CPIPackageList,\n CreditProtectionInsuranceType,\n SelectedInsurance,\n} from \"./CustomerOffer/api\";\nimport * as smartKeyApi from \"../SmartKey/api\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { IO } from \"fp-ts/IO\";\nimport {\n IncomeOptionsOutput,\n IncomeOutput,\n IncomeSourceType,\n SpecialIncomeSourceType,\n} from \"./IncomeForm/domain\";\nimport {\n ConfirmDocumentUploadOutput,\n UploadDocumentOutput,\n} from \"../MortgageDashboard/Documents/api\";\nimport { withFallback } from \"io-ts-types/lib/withFallback\";\nimport { UUID } from \"io-ts-types/lib/UUID\";\nimport { AssignedBrokerForBanker, UnderAgeError } from \"./domain\";\nimport {\n ApplicationProductType,\n ApplicationStatus,\n} from \"../Common/ProcessStoreList/api\";\nimport { DocumentMime } from \"../Common/documentAPI\";\nimport { CheckPrimaryIdEnums } from \"../UKontoSecondPart/api\";\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 NeedCaptchaOutput,\n} from \"../PhoneAndEmailVerification/api\";\nimport {\n ChoosePackageTypeInput,\n GetListError,\n PackageListResponse,\n} from \"../PackagesSelection/api\";\nimport {\n InitVirtualCardResponse,\n PhysicalCardInput,\n} from \"../VirtualCards/api\";\nimport {\n ClientDataInput,\n ClientDataOutput,\n eqClientDataInput,\n} from \"../IdUpload/api\";\nimport {\n BonitaStatus,\n SubmitExpensesResponse,\n} from \"./ExpensesAndAdditionalIncome/ExpensesConfirmation/api\";\n\nexport const LoanOfferWithLimits = t.type(\n {\n amount: NonNegative,\n apr: PercentageLikeFromNumber,\n currency: Currency,\n bankingFee: NonNegative,\n installment: NonNegative,\n interestRate: PercentageLikeFromNumber,\n minAmount: NonNegative,\n maxAmount: NonNegative,\n minTenor: PositiveInteger,\n maxTenor: PositiveInteger,\n tenor: PositiveInteger,\n totalAmount: NonNegative,\n totalToPay: NonNegative,\n insurance: CreditProtectionInsuranceType,\n },\n \"LoanOfferWithLimits\"\n);\n\nexport type LoanOfferWithLimits = t.TypeOf;\n\nexport const LoanOffer = t.type(\n {\n amount: NonNegative,\n currency: Currency,\n tenor: PositiveInteger,\n },\n \"LoanOffer\"\n);\n\nexport type LoanOffer = t.TypeOf;\n\nexport const GenericLoanOfferType = t.keyof(\n {\n COUNTER_OFFER: true,\n EXTENDED_DURATION: true,\n HIGHER_AMOUNT: true,\n CUSTOMER_OFFER: true,\n },\n \"GenericLoanOfferType\"\n);\n\nexport type GenericLoanOfferType = t.TypeOf;\n\nexport const GenericLoanOffer = t.type(\n {\n bankingFee: optionFromUndefined(NonNegative),\n borrowedAmount: NonNegative,\n cpimonthlyAmount: withFallback(optionFromNullable(Positive), option.none),\n cpiSelectedName: optionFromNullable(RuntimeLocaleKey),\n currencyCode: Currency,\n installmentAmount: NonNegative,\n interestRateDecimal: PercentageLikeFromNumber,\n tenor: PositiveInteger,\n offerType: optionFromNullable(GenericLoanOfferType),\n rspn: optionFromUndefined(PercentageLikeFromNumber),\n monthlyPayment: optionFromUndefined(NonNegative),\n totalPayableAmount: optionFromUndefined(NonNegative),\n refinancingAmount: optionFromUndefined(NonNegative),\n newMoneyAmount: optionFromUndefined(NonNegative),\n },\n \"GenericLoanOffer\"\n);\nexport type GenericLoanOffer = t.TypeOf;\n\nexport const GenericLoanOffers = t.type({\n SALARY_TRANSFER_OFFER: GenericLoanOffer,\n NO_SALARY_TRANSFER_OFFER: GenericLoanOffer,\n});\nexport type GenericLoanOffers = t.TypeOf;\n\nexport const WayOfIdentification = t.keyof(\n { REMOTE: true, IN_PERSON: true, UNKNOWN: true },\n \"WayOfIdentification\"\n);\nexport type WayOfIdentification = t.TypeOf;\n\nconst InnerPreapprovedOutput = t.type({\n currency: Currency,\n limittype: t.string,\n interestrate: PercentageLikeFromNumber,\n maximuminstallment: NonNegative,\n maximumpreapprovedlimit: NonNegative,\n maximumpreapprovedtenor: NonNegative,\n minimumproductlimit: NonNegative,\n minimumproducttenor: NonNegative,\n predictedamount: NonNegative,\n predictedexpenses: NonNegative,\n predictedincome: NonNegative,\n predictedtenor: NonNegative,\n upfrontfee: NonNegative,\n});\n\nconst TLProductType = t.intersection([\n InnerPreapprovedOutput,\n t.type({ producttype: t.literal(\"TL\") }),\n]);\nconst CLProductType = t.intersection([\n InnerPreapprovedOutput,\n t.type({ producttype: t.literal(\"CL\") }),\n]);\n\nexport type TLProductType = t.TypeOf;\nexport type CLProductType = t.TypeOf;\n\nconst TLAndCLLimits = t.partial({\n TL: optionFromUndefined(TLProductType),\n CL: optionFromUndefined(CLProductType),\n});\n\nexport type TLAndCLLimits = t.TypeOf;\n\nconst GetPreapprovedLimitsOutput = t.type(\n {\n preapprovedLimits: TLAndCLLimits,\n },\n \"getPreapprovedLimitsOutput\"\n);\n\nexport type GetPreapprovedLimitsOutput = t.TypeOf<\n typeof GetPreapprovedLimitsOutput\n>;\n\nexport const getPreapprovedLimits = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"getPreapprovedLimits\",\n ],\n inputCodec: t.void,\n outputCodec: GetPreapprovedLimitsOutput,\n});\n\nconst EntryFee = t.type({\n feeIncluded: optionFromUndefined(t.boolean),\n amount: t.number,\n});\nexport type EntryFee = t.TypeOf;\n\nexport const GenericLoanResponseOutput = t.type(\n {\n amount: NonNegative,\n refinancedAmountExternal: optionFromUndefined(NonNegative),\n monthlyInsuranceAmount: optionFromUndefined(NonNegative),\n insurance: optionFromUndefined(CreditProtectionInsuranceType),\n currency: Currency,\n installment: NonNegative,\n installmentDay: optionFromUndefined(PositiveIntegerFromString),\n installmentDayList: optionFromUndefined(nonEmptyArray(PositiveInteger)),\n interestRate: PercentageLikeFromNumber,\n tenor: PositiveInteger,\n totalPayableAmount: optionFromUndefined(NonNegative),\n apr: PercentageLikeFromNumber,\n maxAllowedAmount: optionFromUndefined(NonNegative),\n minAmount: NonNegative,\n maxAmount: NonNegative,\n minTenor: PositiveInteger,\n maxTenor: PositiveInteger,\n genericLoanOffers: optionFromUndefined(GenericLoanOffers),\n wayOfIdentification: optionFromUndefined(WayOfIdentification),\n salaryTransfer: t.boolean,\n bankingFee: optionFromUndefined(NonNegative),\n totalAmount: NonNegative,\n productType: optionFromUndefined(ApplicationProductType),\n disbursementAccount: optionFromUndefined(NonEmptyString),\n allPrestoSelected: optionFromUndefined(t.boolean),\n refinancedInternalCCOVD: optionFromUndefined(NonNegative),\n displayMinTenorInfoLabel: optionFromUndefined(t.boolean),\n minTenorForPreapproved: optionFromUndefined(NonNegative),\n eligibleForPreapproved: optionFromUndefined(NonNegative),\n cpiEligibleByAge: optionFromUndefined(t.boolean),\n bankingFeeIncluded: optionFromUndefined(t.boolean),\n stepSizeAmount: optionFromUndefined(PositiveInteger),\n stepSizeTenorMonths: optionFromUndefined(PositiveInteger),\n },\n \"GenericLoanResponseOutput\"\n);\n\nexport type GenericLoanResponseOutput = t.TypeOf<\n typeof GenericLoanResponseOutput\n>;\n\nexport const UpdateOfferStatus = t.keyof(\n {\n OK: true,\n EXPOSURE_EXCEEDED: true,\n REFINANCED_CREDITS_LIMIT_EXCEEDED: true,\n GENERIC_PCE_ERROR: true,\n },\n \"UpdateOfferStatus\"\n);\n\nexport type UpdateOfferStatus = t.TypeOf;\n\nexport const UpdateCustomerOffer = t.type(\n {\n genericLoan: optionFromUndefined(GenericLoanResponseOutput),\n cpiPackageList: optionFromUndefined(CPIPackageList),\n updateOfferStatus: UpdateOfferStatus,\n preapprovedLimits: TLAndCLLimits,\n },\n \"UpdateCustomerOffer\"\n);\n\nexport type UpdateCustomerOffer = t.TypeOf;\n\nexport const LoanUpdateInput = t.type(\n {\n amount: optionFromNullable(NonNegative),\n tenor: optionFromNullable(PositiveInteger),\n },\n \"LoanUpdateInput\"\n);\n\nexport interface LoanUpdateInput extends t.TypeOf {}\n\nexport const eqLoanUpdateInput: Eq = eq.getStructEq({\n amount: option.getEq(eq.eqNumber),\n tenor: option.getEq(eq.eqNumber),\n});\n\nexport const updateLoanOffer = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"update\"],\n inputCodec: LoanUpdateInput,\n inputEq: eqLoanUpdateInput,\n outputCodec: LoanOfferWithLimits,\n errorCodec: UnderAgeError,\n});\n\nexport const setSelectedInsurance = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"insurance\", \"setSelected\"],\n inputCodec: SelectedInsurance,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.type({ success: t.boolean }),\n});\n\nexport const initCustomer = apiCall({\n path: [\"clients\", \"initCustomer\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const initCustomerOffer = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"customerOffer\",\n \"initCustomerOffer\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: UpdateCustomerOffer,\n});\n\nexport const CustomerOfferUpdateInput = t.type(\n {\n amount: NonNegative,\n tenor: PositiveInteger,\n salaryTransfer: t.boolean,\n installmentDay: PositiveIntegerFromString,\n bankingFeeIncluded: optionFromUndefined(t.boolean),\n },\n \"CustomerOfferUpdateInput\"\n);\n\nexport interface CustomerOfferUpdateInput\n extends t.TypeOf {}\n\nexport const eqCustomerOfferUpdateInput: Eq = eq.getStructEq(\n {\n amount: eq.eqNumber,\n tenor: eq.eqNumber,\n installmentDay: eq.eqNumber,\n salaryTransfer: eq.eqBoolean,\n bankingFeeIncluded: eq.eqStrict,\n }\n);\n\nexport const updateCustomerOffer = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"customerOffer\",\n \"updateCustomerOffer\",\n ],\n inputCodec: CustomerOfferUpdateInput,\n inputEq: eqCustomerOfferUpdateInput,\n outputCodec: UpdateCustomerOffer,\n});\n\nexport const SalaryTransferOfferType = t.keyof({\n NO_SALARY_TRANSFER_OFFER: true,\n SALARY_TRANSFER_OFFER: true,\n});\nexport type SalaryTransferOfferType = t.TypeOf;\n\nexport const SelectedCustomerOfferInput = t.type(\n {\n salaryTransferOfferKey: SalaryTransferOfferType,\n },\n \"CustomerOfferUpdateInput\"\n);\n\nexport interface SelectedCustomerOfferInput\n extends t.TypeOf {}\n\nexport const eqSelectedCustomerOfferInput: Eq = eq.getStructEq(\n {\n salaryTransferOfferKey: eq.eqString,\n }\n);\n\nexport const saveSelectedCustomerOffer = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"customerOffer\",\n \"saveSelectedOffer\",\n ],\n inputCodec: SelectedCustomerOfferInput,\n inputEq: eqSelectedCustomerOfferInput,\n outputCodec: t.boolean,\n});\n\nexport const checkClientExisting = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"checkExisting\"],\n inputCodec: CheckExistingClientInput,\n inputEq: eqCheckExistingClientInput,\n outputCodec: CheckExistingClientOutput,\n});\n\nexport const isExistingClient = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"isExistingClient\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.type({ existingClient: t.boolean }),\n});\n\nconst EmailUploadLinkData = t.type({\n bankerFlowId: UUID,\n applicationId: NonEmptyString,\n});\n\nexport const UploadLinkDataStatus = t.keyof({\n OK: true,\n LINK_DATA_NOT_FOUND: true,\n LINK_EXPIRED: true,\n UPLOAD_CONFIRMED: true,\n});\nexport type UploadLinkDataStatus = t.TypeOf;\n\nconst RestoreByClientOutput = t.type({\n emailUploadLinkData: optionFromNullable(EmailUploadLinkData),\n status: UploadLinkDataStatus,\n});\n\ntype RestoreByClientOutput = t.TypeOf;\n\nexport const restoreByClient = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"restoreByClient\",\n ],\n inputCodec: t.type({\n linkId: NonEmptyString,\n }),\n inputEq: eq.getStructEq({\n linkId: eq.eqString,\n }),\n outputCodec: RestoreByClientOutput,\n});\n\nconst checkExistingApplicationOutput = t.type(\n {\n appInitiatedBySame3PUserId: t.boolean,\n applicationExists: t.boolean,\n },\n \"checkExistingApplicationOutput\"\n);\n\nexport type checkExistingApplicationOutput = t.TypeOf<\n typeof checkExistingApplicationOutput\n>;\n\nexport const StartApplicationOutput = t.type(\n {\n amount: NonNegative,\n apr: PercentageLikeFromNumber,\n currency: Currency,\n fee: NonNegative,\n installment: NonNegative,\n interestRate: PercentageLikeFromNumber,\n maxBorrowedAmount: NonNegative,\n minTenor: PositiveInteger,\n maxTenor: PositiveInteger,\n tenor: PositiveInteger,\n totalAmount: NonNegative,\n totalToPay: NonNegative,\n insurance: CreditProtectionInsuranceType,\n },\n \"StartApplicationOutput\"\n);\n\nexport type StartApplicationOutput = t.TypeOf;\n\nexport const initDefaults = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"initDefaults\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: LoanOffer,\n errorCodec: UnderAgeError,\n});\n\nexport const initDefaults3P = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"initDefaults3P\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const startApplication = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"noauth\",\n \"start\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: LoanOfferWithLimits,\n errorCodec: UnderAgeError,\n});\n\nexport const checkExistingApplication = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"client\",\n \"checkExistingApplication\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: checkExistingApplicationOutput,\n});\n\nexport const openClient = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"openClient\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst PersonalInfoSubmitInput = t.type(\n {\n idType: DocumentPurpose,\n },\n \"PersonalInfoSubmitInput\"\n);\n\nexport type PersonalInfoSubmitInput = t.TypeOf;\n\nexport const personalInfoSubmit = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"identification\",\n \"personalInfo\",\n \"submit\",\n ],\n inputCodec: PersonalInfoSubmitInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n errorCodec: PersonalInfoError,\n});\n\nexport const extractClientData = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"identification\", \"extractData\"],\n inputCodec: ClientDataInput,\n inputEq: eqClientDataInput,\n outputCodec: ClientDataOutput,\n});\n\nexport const sendMemorandum = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"sendMemorandum\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst CreditChecksApproved = t.literal(\"Approved\");\nconst CreditChecksRejected = t.literal(\"CBRejected\");\n\nexport type CreditChecksResult =\n | t.TypeOf\n | t.TypeOf;\n\nconst PersonalDataNotReadyResult = t.type(\n {\n status: t.literal(\"RETRY\"),\n },\n \"PersonalDataNotReadyResult\"\n);\n\nconst PersonalDataApprovedOutput = t.type(\n {\n status: t.literal(\"OK\"),\n personalData: PersonalDataFromOutput,\n result: CreditChecksApproved,\n },\n \"PersonalDataApprovedOutput\"\n);\n\nconst PersonalDataRejectedOutput = t.type(\n {\n status: t.literal(\"OK\"),\n result: CreditChecksRejected,\n },\n \"PersonalDataRejectedOutput\"\n);\n\nexport const PersonalDataOutput = t.union(\n [\n PersonalDataNotReadyResult,\n PersonalDataApprovedOutput,\n PersonalDataRejectedOutput,\n ],\n \"PersonalDataOutput\"\n);\n\nexport type PersonalDataOutput = t.TypeOf;\n\nconst StartLoanApplicationInput = t.type(\n {\n nrkiConsent: t.boolean,\n srbiConsent: t.boolean,\n telcoConsent: t.boolean,\n solusConsent: t.boolean,\n },\n \"StartLoanApplicationInput\"\n);\n\nexport type StartLoanApplicationInput = t.TypeOf<\n typeof StartLoanApplicationInput\n>;\n\nconst StartLoanApplicationError = t.type(\n {\n translationsKey: optionFromUndefined(RuntimeLocaleKey),\n },\n \"StartLoanApplicationError\"\n);\n\nexport type StartLoanApplicationError = t.TypeOf<\n typeof StartLoanApplicationError\n>;\n\nconst StartLoanApplicationRejectedError = t.type(\n {\n status: t.literal(false),\n errorMessages: nonEmptyArray(NonEmptyString),\n },\n \"StartLoanApplicationRejectedError\"\n);\n\nconst StartLoanApplicationSuccess = t.type(\n {\n status: t.literal(true),\n applicationNumber: NonEmptyString,\n },\n \"StartLoanApplicationSuccess\"\n);\n\nconst StartLoanApplicationOutput = t.union([\n StartLoanApplicationRejectedError,\n StartLoanApplicationSuccess,\n]);\n\nexport type StartLoanApplicationOutput = t.TypeOf<\n typeof StartLoanApplicationOutput\n>;\n\n// @TODO: probably this call (and data structure) will be removed. Ongoing discussion with BFF if used in restore.\nexport const getPersonalData = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: PersonalDataOutput,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"getPersonalData\",\n ],\n});\n\nconst CreditBureauPendingStatus = t.type(\n {\n cbResultReady: t.literal(false),\n },\n \"CreditBureauPendingStatus\"\n);\n\nconst CreditBureauRejectionStatus = t.type(\n {\n cbResultReady: t.literal(true),\n cbDecision: t.literal(\"Rejected\"),\n },\n \"CreditBureauRejectionStatus\"\n);\n\nconst CreditBureauApprovalStatus = t.type(\n {\n cbResultReady: t.literal(true),\n cbDecision: t.literal(\"Approved\"),\n hasRefinancingCredits: t.boolean,\n hasRepaidLoans: optionFromUndefined(t.boolean),\n },\n \"CreditBureauApprovalStatus\"\n);\ntype CreditBureauApprovalStatus = t.TypeOf;\n\nexport const CreditBureauStatus = t.union(\n [\n CreditBureauPendingStatus,\n CreditBureauRejectionStatus,\n CreditBureauApprovalStatus,\n ],\n \"CreditBureauStatus\"\n);\nexport type CreditBureauStatus = t.TypeOf;\n\nexport function foldCreditBureauStatus(matches: {\n whenPending: IO;\n whenRejected: IO;\n whenApproved: Reader;\n}): Reader {\n return status => {\n if (!status.cbResultReady) {\n return matches.whenPending();\n } else if (status.cbDecision === \"Rejected\") {\n return matches.whenRejected();\n } else {\n return matches.whenApproved(status);\n }\n };\n}\n\nexport const checkCreditBureauStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"creditBureau\", \"status\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CreditBureauStatus,\n});\n\nexport const startLoanApplication = apiCall({\n inputCodec: StartLoanApplicationInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: StartLoanApplicationOutput,\n errorCodec: StartLoanApplicationError,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"startLoanApplication\",\n ],\n});\n\nexport const IncomeSource = t.keyof({\n Employment: true,\n IncomeFromAbroad: true,\n SelfEmployed: true,\n Pensioner: true,\n MaternityLeave: true,\n GovernamentalPension: true,\n MilitaryAid: true,\n Level3HandicapPension: true,\n RentalIncome: true,\n Alimony: true,\n});\n\nexport type IncomeSource = t.TypeOf;\n\nconst AdditionalIncomeRecord = t.type(\n {\n additionalIncome: IncomeOutput,\n },\n \"AdditionalIncomeRecord\"\n);\n\nexport type AdditionalIncomeRecord = t.TypeOf;\n\nconst AdditionalIncomeRecordId = t.type(\n {\n recordId: NonEmptyString,\n },\n \"AdditionalIncomeRecordId\"\n);\n\nexport type AdditionalIncomeRecordId = t.TypeOf<\n typeof AdditionalIncomeRecordId\n>;\n\nconst AdditionalIncomeStatusOutput = t.type(\n {\n statusCode: t.literal(\"OK\"), // @todo: Check with BFF for possible values / removing statusCodeValue.\n },\n \"AdditionalIncomeStatusOutput\"\n);\n\nexport type AdditionalIncomeStatusOutput = t.TypeOf<\n typeof AdditionalIncomeStatusOutput\n>;\n\nexport const additionalIncomeAdd = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"additionalIncome\", \"add\"],\n inputCodec: AdditionalIncomeRecord,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AdditionalIncomeRecord,\n});\n\nexport const additionalIncomeEdit = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"additionalIncome\", \"edit\"],\n inputCodec: AdditionalIncomeRecord,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AdditionalIncomeRecord,\n});\n\nexport const additionalIncomeRemove = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"additionalIncome\", \"remove\"],\n inputCodec: AdditionalIncomeRecordId,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AdditionalIncomeStatusOutput,\n});\n\nexport const AdditionalIncomeLFDecision = t.keyof({\n Approved: true,\n Rejected: true,\n Counteroffer: true,\n Pending: true,\n});\n\nexport type AdditionalIncomeLFDecision = t.TypeOf<\n typeof AdditionalIncomeLFDecision\n>;\n\nexport const AdditionalIncomeProceedNextOutput = t.type(\n {\n lfDecision: AdditionalIncomeLFDecision,\n },\n \"AdditionalIncomeProceedNextOutput\"\n);\n\nexport type AdditionalIncomeProceedNextOutput = t.TypeOf<\n typeof AdditionalIncomeProceedNextOutput\n>;\n\nexport const additionalIncomeNext = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"additionalIncome\",\n \"proceedNext\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AdditionalIncomeProceedNextOutput,\n});\n\nexport const sendAdditionalIncome = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"additionalIncome\",\n \"sendAdditionalIncome\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AdditionalIncomeProceedNextOutput,\n});\n\nconst AdditionalIncomeListOutput = t.type(\n {\n additionalIncomeList: t.array(IncomeOutput), // it can be []\n incomeOptions: optionFromUndefined(IncomeOptionsOutput),\n mainSourceOfIncome: IncomeSourceType,\n mainSpecialTypeOfIncome: optionFromUndefined(SpecialIncomeSourceType),\n },\n \"AdditionalIncomeListOutput\"\n);\n\nexport type AdditionalIncomeListOutput = t.TypeOf<\n typeof AdditionalIncomeListOutput\n>;\n\nexport const additionalIncomeList = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"additionalIncome\", \"list\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: AdditionalIncomeListOutput,\n});\n\nexport const BonitaResponseOutput = t.type(\n {\n submitExpensesResponse: optionFromUndefined(SubmitExpensesResponse),\n proceedWithAdditionalIncomeResponse: optionFromUndefined(\n AdditionalIncomeProceedNextOutput\n ),\n bonitaStatus: BonitaStatus,\n },\n \"BonitaResponse\"\n);\nexport const getBonitaStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"bonita\", \"status\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: BonitaResponseOutput,\n});\n\nexport const PersonalAndTaxInfo = t.type({\n politicallyExposedPerson: t.boolean,\n taxPayerOutsideCzechRepublic: t.boolean,\n otherTaxPayerCountries: t.array(TaxPayerCountry),\n usCitizenOrTaxPayer: t.boolean,\n ssn: optionFromUndefined(t.string),\n specialRelationships: t.boolean,\n riskyActivities: optionFromUndefined(t.boolean),\n industry: optionFromUndefined(Industry),\n secondCitizenship: optionFromUndefined(AllCitizenships),\n});\n\nexport type PersonalAndTaxInfo = t.TypeOf;\n\nexport const TransactionsInfo1 = t.type({\n paymentDestination: PaymentDestination,\n paymentDestinationLabel: LocalizedString,\n paymentDestinationCountries: optionFromUndefined(t.string),\n transactionType: TransactionType,\n transactionTypeLabel: LocalizedString,\n cashTransactionMotivation: optionFromUndefined(t.string),\n});\n\nexport type TransactionsInfo1 = t.TypeOf;\n\n//used for new kyc questionnaire, under FF\nexport const TransactionsInfo2 = t.type({\n averageMonthlyIncomePayments: optionFromUndefined(AverageIncomingPayments),\n paymentDestination: optionFromUndefined(PaymentDestination2),\n paymentDestinationLabel: optionFromUndefined(LocalizedString),\n paymentDestinationCountries: optionFromUndefined(t.string),\n paymentDestinationCountriesWithLabels: optionFromUndefined(t.array(Country)),\n reasonOfTransactions: optionFromUndefined(t.string),\n sourceOfFunds: optionFromUndefined(SourceOfFunds),\n sourceOfIncome: optionFromUndefined(SourceOfIncome),\n employerName: optionFromUndefined(t.string),\n companyICO: optionFromUndefined(t.string),\n});\nexport type TransactionsInfo2 = t.TypeOf;\n\nexport const TransactionsInfo = t.union([TransactionsInfo1, TransactionsInfo2]);\nexport type TransactionsInfo = t.TypeOf;\n\nexport const StandardLoanKYCAnswers = t.type({\n transactionsInfo: TransactionsInfo,\n personalAndTaxInfo: PersonalAndTaxInfo,\n});\nexport type StandardLoanKYCAnswers = t.TypeOf;\n\nconst SubmitKYCInput = t.type({\n answers: StandardLoanKYCAnswers,\n});\ntype SubmitKYCAnswersInput = t.TypeOf;\n\nconst eqSubmitKYCInput: Eq = eq.getStructEq({\n answers: eq.eqStrict,\n});\n\nconst SubmitKYCOutput = t.type(\n {\n needsMicropayment: t.boolean,\n },\n \"SubmitKYCOutput\"\n);\nexport type SubmitKYCOutput = t.TypeOf;\n\nexport const submitKYC = apiCall({\n inputEq: eqSubmitKYCInput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"knowYourCustomer\", \"submit\"],\n inputCodec: SubmitKYCInput,\n outputCodec: SubmitKYCOutput,\n});\n\nexport const deleteApplication = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"applicationState\", \"delete\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n});\n\nexport const saveApplication = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"applicationState\", \"save\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n});\n\nexport const closeApplication = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"applicationState\", \"close\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n});\n\nexport const GetApplicationIdOutput = t.type(\n {\n applicationId: optionFromNullable(NonEmptyString),\n },\n \"GetApplicationIdOutput\"\n);\n\nexport type GetApplicationIdOutput = t.TypeOf;\n\nexport const getApplicationId = apiCall({\n path: [\"utilities\", \"application\", \"getApplicationId\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: GetApplicationIdOutput,\n});\n\nconst ExitProcessReason = t.keyof(\n {\n HIGHER_AMOUNT: true,\n REPAYMENTPERIOD: true,\n BOTH: true,\n NONE: true,\n },\n \"ExitProcessReason\"\n);\ntype ExitProcessReason = t.TypeOf;\n\nconst ExitProcessInput = t.union([\n t.type(\n {\n reason: ExitProcessReason,\n },\n \"ExitProcessInput\"\n ),\n t.type(\n {\n reason: t.literal(\"OTHER\"),\n reasonDetails: t.string,\n },\n \"ExitProcessInputOther\"\n ),\n]);\nexport type ExitProcessInput = t.TypeOf;\n\nconst eqExitProcessInput: Eq = eq.getStructEq({\n reason: eq.eqStrict,\n});\n\nexport const exitProcess = apiCall({\n inputCodec: ExitProcessInput,\n inputEq: eqExitProcessInput,\n path: [\"packages\", \"loans\", \"feedback\", \"exitprocess\"],\n});\n\nexport const LoanType = t.keyof(\n {\n LOAN: true,\n CREDIT_CARD: true,\n OVERDRAFT: true,\n },\n \"LoanType\"\n);\n\nexport type LoanType = t.TypeOf;\n\nconst LoanItem = t.type(\n {\n type: LoanType,\n originalAmount: MoneyAmount,\n remainingAmount: MoneyAmount,\n recordId: NonEmptyString,\n },\n \"LoanItem\"\n);\n\nconst LoanItemRework = t.type(\n {\n type: optionFromUndefined(LoanType),\n originalAmount: optionFromUndefined(MoneyAmount),\n remainingAmount: optionFromUndefined(MoneyAmount),\n recordId: optionFromUndefined(NonEmptyString),\n },\n \"LoanItemRework\"\n);\n\nexport type LoanItem = t.TypeOf;\n\nconst InternalLoanItem = t.intersection(\n [\n t.type({\n selectedForRefinance: t.boolean,\n startDate: optionFromUndefined(DateFromISOString),\n }),\n LoanItem,\n ],\n \"InternalLoanItem\"\n);\n\nconst InternalLoanItemRework = t.intersection(\n [\n t.type({\n selectedForRefinance: optionFromUndefined(t.boolean),\n startDate: optionFromUndefined(DateFromISOString),\n }),\n LoanItemRework,\n ],\n \"InternalLoanItemRework\"\n);\n\nexport type InternalLoanItem = t.TypeOf;\nexport type InternalLoanItemRework = t.TypeOf;\n\nconst ExternalLoanItem = t.intersection(\n [\n t.type({\n creditCardNumber: optionFromUndefined(t.string),\n creditor: optionFromUndefined(t.string),\n creditorCode: optionFromUndefined(NonEmptyString),\n variableSymbol: optionFromUndefined(NonEmptyString),\n accountForDisbursment: optionFromUndefined(NonEmptyString),\n selectedForRepaid: optionFromUndefined(t.boolean),\n }),\n LoanItem,\n ],\n \"ExternalLoanItem\"\n);\n\nconst RepaidLoanItem = t.type(\n {\n type: LoanType,\n recordId: NonEmptyString,\n creditor: optionFromUndefined(t.string),\n creditorCode: optionFromUndefined(NonEmptyString),\n },\n \"RepaidLoanItem\"\n);\n\nconst ExternalLoanItemRework = t.intersection(\n [\n t.type({\n creditCardNumber: optionFromUndefined(t.string),\n creditor: optionFromUndefined(t.string),\n variableSymbol: optionFromUndefined(NonEmptyString),\n accountForDisbursment: optionFromUndefined(NonEmptyString),\n }),\n LoanItemRework,\n ],\n \"ExternalLoanItemRework\"\n);\n\nexport type RepaidLoanItem = t.TypeOf;\nexport type ExternalLoanItem = t.TypeOf;\nexport type ExternalLoanItemRework = t.TypeOf;\n\nexport const InternalLoansList = t.type(\n { liabilitiesList: t.array(InternalLoanItem) },\n \"InternalLoansList\"\n);\n\nexport const InternalLoansListRework = t.type(\n { liabilitiesList: t.array(InternalLoanItemRework) },\n \"InternalLoansListRework\"\n);\n\nexport type InternalLoansList = t.TypeOf;\nexport type InternalLoansListRework = t.TypeOf;\n\nexport const ExternalLoansList = t.type(\n { liabilitiesList: t.array(ExternalLoanItem) },\n \"ExternalLoansList\"\n);\n\nexport const RepaidLoansList = t.type(\n { liabilitiesList: t.array(RepaidLoanItem) },\n \"RepaidLoansList\"\n);\n\nexport const ExternalLoansListRework = t.type(\n { liabilitiesList: t.array(ExternalLoanItemRework) },\n \"ExternalLoansListRework\"\n);\n\nexport type RepaidLoansList = t.TypeOf;\nexport type ExternalLoansList = t.TypeOf;\nexport type ExternalLoansListRework = t.TypeOf;\n\nconst AccountsForRefinancingOutput = t.type(\n {\n accountNumber: optionFromUndefined(NonEmptyString),\n accountCurrency: Currency,\n internalLoans: optionFromUndefined(InternalLoansList),\n externalLoans: optionFromUndefined(ExternalLoansList),\n },\n \"AccountsForRefinancingOutput\"\n);\n\nexport type AccountsForRefinancingOutput = t.TypeOf<\n typeof AccountsForRefinancingOutput\n>;\n\nexport const getAccountsForRefinancing = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"getAccountsForRefinancing\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: AccountsForRefinancingOutput,\n});\n\nconst RepaidLoansOutput = ExternalLoansList;\n\nexport type RepaidLoansOutput = t.TypeOf;\n\nexport const getRepaidLoans = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"getLoansMarkedAsRepaid\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: RepaidLoansOutput,\n});\n\nconst RefinancingListLoanItem = t.intersection(\n [\n t.type({\n selectedForRefinance: t.boolean,\n selectedForRepaid: t.boolean, //only for external loans\n startDate: optionFromUndefined(DateFromISOString),\n }),\n LoanItem,\n ],\n \"RefinancingListLoanItem\"\n);\n\nexport type RefinancingListLoanItem = t.TypeOf;\n\nconst RefinancingLoanList = t.type(\n { liabilitiesList: t.array(RefinancingListLoanItem) },\n \"RefinancingLoanList\"\n);\n\nconst RefinancingLoanListOutput = t.type(\n {\n internalLoans: optionFromUndefined(RefinancingLoanList),\n externalLoans: optionFromUndefined(RefinancingLoanList),\n refinancedAmountInternal: t.number,\n refinancedAmountExternal: t.number,\n },\n \"RefinancingLoanListOutput\"\n);\n\nexport type RefinancingLoanListOutput = t.TypeOf<\n typeof RefinancingLoanListOutput\n>;\n\nexport const refinancingLoanList = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"refinancingLoanList\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: RefinancingLoanListOutput,\n});\n\nconst FollowUpPreliminaryStatusOutput = t.type(\n {\n statusCode: t.keyof({\n OK: true,\n NOK: true,\n }),\n },\n \"FollowUpPreliminaryStatusOutput\"\n);\n\nexport type FollowUpPreliminaryStatusOutput = t.TypeOf<\n typeof FollowUpPreliminaryStatusOutput\n>;\n\nexport const followUpPreliminaryStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"preliminaryStatus\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: FollowUpPreliminaryStatusOutput,\n});\n\nconst Credentials = t.type(\n {\n password: NonEmptyString,\n pin: optionFromNullable(NonEmptyString),\n userId: optionFromNullable(NonEmptyString),\n },\n \"Credentials\"\n);\ntype Credentials = t.TypeOf;\n\nconst eqCredentials: Eq = eq.getStructEq({\n password: eq.eqString,\n pin: option.getEq(eq.eqString),\n userId: option.getEq(eq.eqString),\n});\n\nconst SubmitCredentialsInput = t.type(\n {\n profile: Credentials,\n },\n \"SubmitCredentialsInput\"\n);\ntype SubmitCredentialsInput = t.TypeOf;\n\nconst eqSubmitCredentialsInput: Eq = eq.getStructEq({\n profile: eqCredentials,\n});\n\nexport const submitCredentials = apiCall({\n inputCodec: SubmitCredentialsInput,\n inputEq: eqSubmitCredentialsInput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"submitCredentials\"],\n outputCodec: t.unknown,\n});\n\nconst ClientStatus = t.keyof({\n PENDING: true,\n DONE: true,\n ERROR: true,\n});\n\nexport const ClientStatusErrorId = t.keyof({\n RiskyClient: true,\n KycAssessmentNotAvailable: true,\n KycAssessmentResultNotAvailable: true,\n});\nexport type ClientStatusErrorId = t.TypeOf;\n\nconst ClientStatusOutput = t.type(\n {\n status: ClientStatus,\n id: optionFromUndefined(ClientStatusErrorId),\n message: optionFromUndefined(\n t.keyof({\n RiskyClient: true,\n KycAssessmentNotAvailable: true,\n KycAssessmentResultNotAvailable: true,\n })\n ),\n },\n \"ClientStatusOutput\"\n);\n\nexport type ClientStatusOutput = t.TypeOf;\n\nexport const getClientStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"client\", \"status\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ClientStatusOutput,\n});\n\nconst SignatureStatus = t.keyof({\n NONE: true,\n PENDING: true,\n DONE: true,\n ERROR: true,\n});\n\nconst SignatureStatusOutput = t.type(\n {\n signatureStatus: SignatureStatus,\n },\n \"SignatureStatusOutput\"\n);\n\nexport type SignatureStatus = t.TypeOf;\nexport type SignatureStatusOutput = t.TypeOf;\n\nexport const getSignatureStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"signatureStatus\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: SignatureStatusOutput,\n});\n\nconst RemoteSignatureStatus = t.keyof({\n PENDING: true,\n SIGNING: true,\n DONE: true,\n ERROR: true,\n});\n\nexport const getKnowYourCustomerStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"knowYourCustomer\", \"status\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ClientStatusOutput,\n});\n\nexport const contractRead = apiCall({\n inputCodec: ContractReadInput,\n inputEq: eqContractReadInput,\n outputCodec: ContractReadOutput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"markDocumentRead\"],\n});\n\nexport const termsAndConditionsReceived = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: TermsAndConditionsReceivedOutput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"termsAndConditionsReceived\"],\n});\n\nexport const marketingConsent = apiCall({\n inputCodec: MarketingConsentReadInput,\n inputEq: eqMarketingConsentReadInput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"marketingConsent\"],\n});\n\nexport const preContractualDocuments = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: PreContractualDocumentsListOutput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"contractualDocumentList\"],\n});\n\nexport const termsAndConditions = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: TermsAndConditionsOutput,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"termsAndConditionsDocumentList\",\n ],\n});\n\nexport const phoneNumber = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: PhoneNumberOutput,\n path: [\"clients\", \"identification\", \"phoneNumber\"],\n});\n\nexport const LFStatus = t.keyof(\n {\n Approved: true,\n Pending: true,\n Rejected: true,\n },\n \"LFStatus\"\n);\nexport type LFStatus = t.TypeOf;\n\nconst AuthorizeWithOTPOutput = t.type(\n {\n authorize: t.boolean,\n remainingRequests: NonNegativeInteger,\n transactionId: LocalizedString,\n lfStatus: optionFromUndefined(LFStatus),\n },\n \"AuthorizeWithOTPOutput\"\n);\n\nexport const authorizeWithOTP = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"authorizeWithOTP\"],\n inputCodec: OtpGenerationInput,\n inputEq: eqOtpGenerationInput,\n errorCodec: t.union([OtpGenerationError, GenericError]),\n outputCodec: AuthorizeWithOTPOutput,\n});\n\nconst RemoteSignatureStatusOutput = t.type(\n {\n status: RemoteSignatureStatus,\n lfStatus: optionFromUndefined(LFStatus),\n },\n \"SignatureStatusOutput\"\n);\n\nexport type RemoteSignatureStatusOutput = t.TypeOf<\n typeof RemoteSignatureStatusOutput\n>;\n\nexport const getRemoteSignatureStatus = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"remoteSignatureStatus\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: RemoteSignatureStatusOutput,\n});\n\nexport const GenerateOTPOutput = t.type(\n {\n remainingRequests: NonNegativeInteger,\n },\n \"GenerateOTPOutput\"\n);\n\nexport const generateOtp = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"otp\"],\n inputCodec: OtpGenerationInput,\n inputEq: eqOtpGenerationInput,\n outputCodec: GenerateOTPOutput,\n errorCodec: t.union([OtpGenerationError, GenericError]),\n});\n\nexport const otpVerify = apiCall({\n inputEq: eqOtpVerifyInput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"otp\", \"verify\"],\n inputCodec: OtpVerifyInput,\n errorCodec: OtpVerifyError,\n});\n\nexport const generateIdentificationOtp = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"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: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"identification\",\n \"otp\",\n \"verify\",\n ],\n inputCodec: OtpVerifyInputBase,\n errorCodec: OtpVerifyErrorBase,\n});\n\nexport const checkAuthorizationOTP = apiCall({\n inputEq: eqOtpVerifyInput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"checkAuthorizationOTP\"],\n inputCodec: OtpVerifyInput,\n errorCodec: OtpVerifyError,\n});\n\nconst MicroTransactionDataOutput = t.type(\n {\n accountNumber: NonEmptyString,\n bankCode: NonEmptyString,\n bankName: NonEmptyString,\n prefixCode: t.string,\n },\n \"MicroTransactionDataOutput\"\n);\n\nexport type MicroTransactionDataOutput = t.TypeOf<\n typeof MicroTransactionDataOutput\n>;\n\nconst IncomeAndPersonalData = t.type({\n income: IncomeOutput,\n personalData: optionFromUndefined(\n t.type({\n personalData: PersonalDataFromOutput,\n })\n ),\n});\n\nexport type IncomeAndPersonalData = t.TypeOf;\n\nconst IncomeAndPersonalDataDTO = t.type({\n income: IncomeOutput,\n personalData: PersonalDataFromOutput,\n});\n\nexport type IncomeAndPersonalDataDTO = t.TypeOf<\n typeof IncomeAndPersonalDataDTO\n>;\n\nconst OfferTypeDecision = t.keyof(\n {\n Approved: true,\n Counteroffer: true,\n Rejected: true,\n },\n \"OfferTypeDecision\"\n);\n\nexport type OfferTypeDecision = t.TypeOf;\n\nconst OfferTypeOutput = t.type(\n {\n lfDecision: OfferTypeDecision,\n },\n \"OfferTypeOutput\"\n);\n\nexport type OfferTypeOutput = t.TypeOf;\n\nexport const CoreCalendar = t.type(\n {\n days: NonEmptyString,\n month: PositiveInteger,\n year: PositiveInteger,\n },\n \"CoreCalendar\"\n);\n\nexport type CoreCalendar = t.TypeOf;\n\nexport const getCoreCalendar = apiCall({\n path: [\"utilities\", \"cached\", \"noauth\", \"coreCalendar\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: nonEmptyArray(CoreCalendar),\n});\n\n// =========================================================================================\n// STEPS types blocks for RestoreNewestLoanApplicationOutput\n// discriminant uninon type on festep to check in simple way required and nullable fields\n// =========================================================================================\n\nconst RestoreNewestLoanApplicationCreditChecksStepOutput = t.type(\n {\n festep: t.literal(\"CREDIT_CHECKS\"),\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromUndefined(TLAndCLLimits),\n genericLoanResponse: GenericLoanResponseOutput,\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationCreditChecksStepOutput\"\n);\n\nexport type RestoreNewestLoanApplicationCreditChecksStepOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationCreditChecksStepOutput\n>;\n\nconst RestoreNewestLoanApplicationReviewInformationStepOutput = t.type(\n {\n festep: t.literal(\"REVIEW_INFORMATION\"),\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromUndefined(TLAndCLLimits),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n genericLoanResponse: GenericLoanResponseOutput,\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationReviewInformationStepOutput\"\n);\n\nexport type RestoreNewestLoanApplicationReviewInformationStepOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationReviewInformationStepOutput\n>;\n\nconst FinalizeOfferToAdditionalIncomeSteps = t.keyof(\n {\n FINALISE_OFFER_MAIN_SCREEN: true,\n EXPENSE: true,\n ADDITIONAL_INCOME: true,\n },\n \"ExpenseToAdditionIncomeSteps\"\n);\n\nconst RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput = t.type(\n {\n festep: FinalizeOfferToAdditionalIncomeSteps,\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromUndefined(TLAndCLLimits),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n incomeAndPersonalData: IncomeAndPersonalData,\n genericLoanResponse: GenericLoanResponseOutput,\n creditBureauStatusResponse: CreditBureauStatus,\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput\"\n);\n\nexport type RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput\n>;\n\nconst ChooseOfferToKycSteps = t.keyof(\n {\n CHOOSE_OFFER: true,\n REVIEW_OFFER: true,\n KYC: true,\n },\n \"ChooseOfferToKycSteps\"\n);\n\nconst RestoreNewestLoanApplicationChooseOfferToKycStepsOutput = t.type(\n {\n festep: ChooseOfferToKycSteps,\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromUndefined(TLAndCLLimits),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n incomeAndPersonalData: IncomeAndPersonalData,\n genericLoanResponse: GenericLoanResponseOutput,\n creditBureauStatusResponse: CreditBureauStatus,\n proceedNextResponse: optionFromUndefined(OfferTypeOutput),\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationChooseOfferToKycStepsOutput\"\n);\n\nexport type RestoreNewestLoanApplicationChooseOfferToKycStepsOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationChooseOfferToKycStepsOutput\n>;\n\nconst RestoreNewestLoanApplicationMicroPaymentStepOutput = t.type(\n {\n festep: t.literal(\"MICROPAYMENT\"),\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromUndefined(TLAndCLLimits),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n incomeAndPersonalData: IncomeAndPersonalData,\n genericLoanResponse: GenericLoanResponseOutput,\n personalDataResponse: PersonalDataOutput,\n creditBureauStatusResponse: CreditBureauStatus,\n proceedNextResponse: optionFromUndefined(OfferTypeOutput),\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationMicroPaymentStepOutput\"\n);\n\nexport type RestoreNewestLoanApplicationMicroPaymentStepsOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationMicroPaymentStepOutput\n>;\n\nconst StandardLoanKycOutput = t.type(\n {\n transactionsInfo: TransactionsInfo,\n personalAndTaxInfo: optionFromUndefined(PersonalAndTaxInfo),\n },\n \"StandardLoanKycOutput\"\n);\n\nconst StandardLoanKycRequest = t.type(\n {\n answers: StandardLoanKycOutput,\n },\n \"StandardLoanKycRequest\"\n);\n\nconst RestoreNewestLoanApplicationPersonalDataStepOutput = t.type(\n {\n festep: t.literal(\"PERSONAL_DATA\"),\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromNullable(TLAndCLLimits),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n incomeAndPersonalData: IncomeAndPersonalData,\n standardLoanKycRequest: optionFromUndefined(StandardLoanKycRequest),\n genericLoanResponse: GenericLoanResponseOutput,\n personalDataResponse: PersonalDataOutput,\n creditBureauStatusResponse: CreditBureauStatus,\n proceedNextResponse: optionFromUndefined(OfferTypeOutput),\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationPersonalDataStepOutput\"\n);\n\nexport type RestoreNewestLoanApplicationPersonalDataStepOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationPersonalDataStepOutput\n>;\n\nconst RestoreNewestLoanApplicationOtherSteps = t.keyof(\n {\n PACKAGE_SELECTION: true,\n VIRTUAL_CARDS: true,\n ACCOUNTS_FOR_REFINANCING: true,\n REPAID_LOANS: true,\n CLIENT_CREDENTIALS: true,\n UPLOAD_DOCUMENTS: true,\n SIGNATURE: true,\n FINAL_PAGE: true,\n UNDER_REWORK: true,\n AUTHORIZE_PUSH: true,\n REMOTE_SIGNATURE: true,\n },\n \"RestoreNewestLoanApplicationOtherSteps\"\n);\n\nconst RestoreNewestLoanApplicationOtherStepsOutput = t.type(\n {\n festep: RestoreNewestLoanApplicationOtherSteps,\n additionalQuestionsCPIRequest: optionFromNullable(CPIAdditionalQuestions),\n allPreApprovedLimitsResponse: optionFromNullable(TLAndCLLimits),\n genericLoanResponse: GenericLoanResponseOutput,\n personalDataResponse: PersonalDataOutput,\n incomeAndPersonalData: IncomeAndPersonalData,\n microTransactionData: optionFromUndefined(MicroTransactionDataOutput),\n standardLoanKycRequest: optionFromUndefined(StandardLoanKycRequest),\n startStandardLoanApplicationRequest: StartLoanApplicationInput,\n creditBureauStatusResponse: CreditBureauStatus,\n proceedNextResponse: optionFromUndefined(OfferTypeOutput),\n personalDataConfirmation: optionFromUndefined(\n t.type({\n primary: optionFromUndefined(ClientDataOCR),\n secondary: optionFromUndefined(ClientDataOCR),\n })\n ),\n existingClient: t.boolean,\n },\n \"RestoreNewestLoanApplicationOtherStepsOutput\"\n);\n\nexport type RestoreNewestLoanApplicationOtherStepsOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationOtherStepsOutput\n>;\n\nconst RestoreNewestLoanApplicationOutput = t.intersection(\n [\n t.union([\n RestoreNewestLoanApplicationCreditChecksStepOutput,\n RestoreNewestLoanApplicationReviewInformationStepOutput,\n RestoreNewestLoanApplicationExpenseToAdditionalIncomeStepsOutput,\n RestoreNewestLoanApplicationChooseOfferToKycStepsOutput,\n RestoreNewestLoanApplicationMicroPaymentStepOutput,\n RestoreNewestLoanApplicationPersonalDataStepOutput,\n RestoreNewestLoanApplicationOtherStepsOutput,\n ]),\n t.partial({\n cardProviderChange: t.boolean,\n }),\n ],\n \"RestoreNewestLoanApplicationOutput\"\n);\n\nexport type RestoreNewestLoanApplicationOutput = t.TypeOf<\n typeof RestoreNewestLoanApplicationOutput\n>;\n\nconst ParallelFlowParameters = t.type({\n hasCAFlowInProgress: t.boolean,\n hasCAFlowSentToBO: t.boolean,\n hasCFFlowSentToBO: t.boolean,\n date: optionFromUndefined(t.number),\n existingApplicationId: optionFromUndefined(NonEmptyString),\n});\nexport type ParallelFlowParameters = t.TypeOf;\n\nexport const hasParallelFlow = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"genericloans\",\n \"restore\",\n \"restrictParallelFlow\",\n ],\n inputCodec: t.void,\n outputCodec: optionFromNullable(ParallelFlowParameters),\n});\n\nconst NewestApplicationInProgressOutput = t.type(\n {\n applicationId: optionFromNullable(NonEmptyString),\n responseWithDifferentBroker: t.boolean,\n parallelFlowParameters: ParallelFlowParameters,\n restoreData: optionFromNullable(RestoreNewestLoanApplicationOutput),\n status: optionFromNullable(ApplicationStatus),\n cardProviderChange: t.boolean,\n },\n \"NewestApplicationInProgressOutput\"\n);\n\nexport type NewestApplicationInProgressOutput = t.TypeOf<\n typeof NewestApplicationInProgressOutput\n>;\n\nconst CheckClientAge = t.type({\n underAge: t.boolean,\n});\nexport type CheckClientAge = t.TypeOf;\n\nexport const checkMinimumAge = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkClientAge\"],\n inputCodec: t.void,\n outputCodec: CheckClientAge,\n errorCodec: GenericError,\n});\n\nexport const checkForeign = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkForeign\"],\n inputCodec: t.void,\n outputCodec: t.boolean,\n errorCodec: GenericError,\n});\n\nconst ExistingClientCheckNotesCF = t.type({\n hasBlockingNotes: t.boolean,\n});\nexport type ExistingClientCheckNotesCF = t.TypeOf<\n typeof ExistingClientCheckNotesCF\n>;\n\nexport const checkNotes = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkNotes\"],\n inputCodec: t.void,\n outputCodec: ExistingClientCheckNotesCF,\n errorCodec: GenericError,\n});\n\nexport const CheckPrimaryIdEnumsCF = t.union([\n CheckPrimaryIdEnums,\n t.keyof({\n UPDATE_PASSWORD: true,\n UPDATE_ID_CONTACTS_PASSWORD: true,\n UPDATE_ID_PASSWORD: true,\n UPDATE_ID_OTHER_THAN_AUTH_ID: true,\n UPDATE_ID_MISSING_INFORMATION: true,\n }),\n]);\n\nexport type CheckPrimaryIdEnumsCF = t.TypeOf;\n\nexport const existingClientPrimaryIdCheck = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkExpiredOrStolen\"],\n inputCodec: t.void,\n outputCodec: CheckPrimaryIdEnumsCF,\n errorCodec: GenericError,\n});\n\nconst ExistingClientCheckKycCF = t.type({\n kycNeeded: t.boolean,\n highRisk: t.boolean,\n foreign: t.boolean,\n});\nexport type ExistingClientCheckKycCF = t.TypeOf<\n typeof ExistingClientCheckKycCF\n>;\n\nexport const existingClientKYCCheck = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkKyc\"],\n inputCodec: t.void,\n outputCodec: ExistingClientCheckKycCF,\n errorCodec: GenericError,\n});\n\nconst ExistingClientCheckPhoneAndEmail = t.type({\n phoneNumberNeeded: t.boolean,\n emailAddressNeeded: t.boolean,\n});\nexport type ExistingClientCheckPhoneAndEmail = t.TypeOf<\n typeof ExistingClientCheckPhoneAndEmail\n>;\n\nexport const existingClientPhoneAndEmailCheck = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"client\", \"checkPhoneAndEmail\"],\n inputCodec: t.void,\n outputCodec: ExistingClientCheckPhoneAndEmail,\n errorCodec: GenericError,\n});\n\nexport const RestoreErrorKeys = t.keyof(\n {\n TOO_EARLY: true,\n },\n \"RestoreErrorKeys\"\n);\nexport type RestoreErrorKeys = t.TypeOf;\n\nexport const RestoreError = t.type(\n {\n status: RestoreErrorKeys,\n },\n \"RestoreError\"\n);\nexport type RestoreError = t.TypeOf;\n\nexport const newestApplicationInProgress = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"genericloans\",\n \"restore\",\n \"newestApplicationInProgress\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: NewestApplicationInProgressOutput,\n errorCodec: RestoreError,\n});\n\nexport const DeleteSavedApplicationRequest = t.type({\n processId: t.string,\n});\nexport type DeleteSavedApplicationRequest = t.TypeOf<\n typeof DeleteSavedApplicationRequest\n>;\n\nexport const deleteExistingApplication = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"genericloans\",\n \"restore\",\n \"deleteExistingCAApplication\",\n ],\n inputCodec: DeleteSavedApplicationRequest,\n outputCodec: t.unknown,\n});\n\nexport const RestoreNewestApplicationInput = t.type({\n restoreWithDialog: t.boolean,\n});\nexport type RestoreNewestApplicationInput = t.TypeOf<\n typeof RestoreNewestApplicationInput\n>;\n\nexport const restoreNewestApplication = apiCall({\n inputCodec: RestoreNewestApplicationInput,\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"genericloans\",\n \"restore\",\n \"restoreNewestApplication\",\n ],\n errorCodec: RestoreError,\n});\n\nconst SectionType = t.keyof({\n MainIncome: true,\n AdditionalIncome: true,\n Refinancing: true,\n OptionalDocuments: true,\n NewRequiredDocuments: true,\n});\n\nexport type SectionType = t.TypeOf;\n\nconst DocumentMetadata = t.type(\n {\n applicationElementID: NonEmptyString,\n clientID: optionFromNullable(NonEmptyString),\n documentTypeID: NonEmptyString,\n documentTypeName: NonEmptyString,\n section: NonEmptyString,\n translationCode: RuntimeLocaleKey,\n },\n \"DocumentMetadata\"\n);\n\nexport type DocumentMetadata = t.TypeOf;\n\nexport const UploadedDocumentData = t.type(\n {\n section: SectionType,\n subSection: LocalizedString,\n metadata: DocumentMetadata,\n docId: optionFromUndefined(NonEmptyString),\n mimeType: optionFromNullable(DocumentMime),\n documentName: LocalizedString,\n requiredDocumentStatus: t.keyof({\n NEW: true,\n UPLOADED: true,\n UPLOADED_BY_CLIENT: true,\n UPLOADING: true,\n UPLOADING_BY_CLIENT: true,\n SEALING: true,\n }),\n uploadedTimestamp: optionFromUndefined(t.number),\n uploadNote: optionFromUndefined(t.string),\n oldDocId: optionFromUndefined(t.string),\n uniqueLfId: optionFromUndefined(t.string),\n },\n \"UploadedDocumentData\"\n);\n\nexport type UploadedDocumentData = t.TypeOf;\n\nexport const appStateRequiredDocuments = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"appStateRequiredDocuments\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const appStateRequiredDocumentsReviewOffer = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"appStateRequiredDocumentsReviewOffer\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const requiredDocuments = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"requiredDocuments\"],\n inputCodec: t.void,\n outputCodec: t.array(UploadedDocumentData),\n});\n\nexport const previewRequiredDocuments = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"previewRequiredDocuments\",\n ],\n inputCodec: t.void,\n outputCodec: t.array(UploadedDocumentData),\n});\n\nexport const CheckUploadChangesOutput = t.type({\n uploadChanges: t.boolean,\n uploadConfirmed: t.boolean,\n});\nexport type CheckUploadChangesOutput = t.TypeOf<\n typeof CheckUploadChangesOutput\n>;\n\nexport const checkUploadChanges = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkUploadChanges\",\n ],\n inputCodec: t.void,\n outputCodec: CheckUploadChangesOutput,\n});\n\nexport const RequiredDocumentMetadata = t.type({\n applicationElementID: NonEmptyString,\n clientID: optionFromNullable(NonEmptyString),\n documentTypeID: NonEmptyString,\n documentTypeName: NonEmptyString,\n section: NonEmptyString,\n translationCode: RuntimeLocaleKey,\n});\n\nexport type RequiredDocumentMetadata = t.TypeOf<\n typeof RequiredDocumentMetadata\n>;\n\nexport const UploadDocumentInput = t.type({\n documentContent: CompressedFileContent,\n filename: t.string,\n mimeType: t.string,\n requiredDocumentMetadata: RequiredDocumentMetadata,\n});\n\nexport type UploadDocumentInput = t.TypeOf;\n\nexport const CheckOptionalDocumentInput = t.type({\n documentTypeId: t.string,\n oldDocId: t.string,\n documentContent: CompressedFileContent,\n filename: t.string,\n mimeType: t.string,\n});\nexport type CheckOptionalDocumentInput = t.TypeOf<\n typeof CheckOptionalDocumentInput\n>;\n\nexport const CheckNewOptionalDocumentInput = t.type({\n documentContent: CompressedFileContent,\n filename: t.string,\n mimeType: t.string,\n});\nexport type CheckNewOptionalDocumentInput = t.TypeOf<\n typeof CheckOptionalDocumentInput\n>;\n\nexport const ConfirmDocumentUploadInput = t.type({\n uploadNote: t.string,\n});\nexport type ConfirmDocumentUploadInput = t.TypeOf<\n typeof ConfirmDocumentUploadInput\n>;\n\nexport const CheckNewRequiredDocumentInput = t.type({\n documentTypeId: t.string,\n translationCode: t.string,\n documentContent: CompressedFileContent,\n filename: t.string,\n mimeType: t.string,\n uniqueLfId: t.string,\n});\n\nexport type CheckNewRequiredDocumentInput = t.TypeOf<\n typeof CheckNewRequiredDocumentInput\n>;\n\nexport const UploadLinkDataPollingStatus = t.keyof({\n BANKER_INFO_UNCHANGED: true,\n BANKER_INFO_NOT_FOUND: true,\n BANKER_INFO_CHANGED: true,\n LINK_EXPIRED: true,\n LINK_DATA_NOT_FOUND: true,\n OK: true,\n UPLOAD_CONFIRMED: true,\n});\nexport type UploadLinkDataPollingStatus = t.TypeOf<\n typeof UploadLinkDataPollingStatus\n>;\n\nexport const GetLinkDataOutput = t.type({\n emailUploadLinkData: optionFromNullable(EmailUploadLinkData),\n status: UploadLinkDataStatus,\n});\n\nexport const GetLinkDataPollingOutput = t.type({\n emailUploadLinkData: optionFromNullable(EmailUploadLinkData),\n status: UploadLinkDataPollingStatus,\n});\n\nexport type EmailUploadLinkData = t.TypeOf;\n\nexport const uploadDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"upload\"],\n inputCodec: UploadDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const uploadDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"uploadByClient\"],\n inputCodec: UploadDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const confirmDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"confirm\"],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const confirmDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"confirmByClient\"],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const confirmPOIByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"confirmPOIByClient\",\n ],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const checkOptionalDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"checkOptionalDoc\"],\n inputCodec: CheckOptionalDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const checkOptionalDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkOptionalDocByClient\",\n ],\n inputCodec: CheckOptionalDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const checkNewOptionalDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"checkOptionalDoc\"],\n inputCodec: CheckNewOptionalDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const checkNewOptionalDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkOptionalDocByClient\",\n ],\n inputCodec: CheckNewOptionalDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const confirmOptionalDocumentUpload = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"confirmOptionalDocUpload\",\n ],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const confirmOptionalDocumentUploadByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"confirmOptionalDocUploadByClient\",\n ],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const cancelOptionalDocUpload = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"cancelOptionalDocUpload\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const cancelOptionalDocUploadByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"cancelOptionalDocUploadByClient\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const removeOptionalDoc = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"removeOptionalDoc\"],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const removeOptionalDocByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"removeOptionalDocByClient\",\n ],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const checkNewRequiredDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkNewRequiredDoc\",\n ],\n inputCodec: CheckNewRequiredDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const checkNewRequiredDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkNewRequiredDocByClient\",\n ],\n inputCodec: CheckNewRequiredDocumentInput,\n outputCodec: UploadDocumentOutput,\n});\n\nexport const confirmNewRequiredDocumentUpload = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"confirmNewRequiredDocUpload\",\n ],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const confirmNewRequiredDocumentUploadByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"confirmNewRequiredDocUploadByClient\",\n ],\n inputCodec: ConfirmDocumentUploadInput,\n outputCodec: ConfirmDocumentUploadOutput,\n});\n\nexport const cancelNewRequiredDocUpload = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"cancelNewRequiredDocUpload\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const cancelNewRequiredDocUploadByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"cancelNewRequiredDocUploadByClient\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const removeNewRequiredDoc = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"removeNewRequiredDoc\",\n ],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const removeNewRequiredDocByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"removeNewRequiredDocByClient\",\n ],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const saveEmailUploadLinkData = apiCall({\n inputEq: eq.fromEquals(constTrue),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"saveEmailUploadLinkData\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const getLinkData = apiCall({\n inputEq: eq.fromEquals(constTrue),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"noauth\",\n \"getLinkData\",\n ],\n inputCodec: t.type({\n linkId: NonEmptyString,\n }),\n outputCodec: GetLinkDataOutput,\n});\n\nexport const getLinkDataPolling = apiCall({\n inputEq: eq.fromEquals(constTrue),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"getLinkDataPolling\",\n ],\n inputCodec: t.type({\n linkId: NonEmptyString,\n bankerFlowId: UUID,\n }),\n outputCodec: GetLinkDataPollingOutput,\n});\n\nexport const reassignEmailFlow = apiCall({\n inputEq: eq.fromEquals(constTrue),\n path: [\"clients\", \"identification\", \"emailUpload\", \"reassign\"],\n inputCodec: t.type({\n bankerFlowId: UUID,\n }),\n outputCodec: t.type({\n bankerFlowId: UUID,\n }),\n});\n\nexport const cancelUpload = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"upload\", \"cancel\"],\n inputCodec: RequiredDocumentMetadata,\n outputCodec: t.unknown,\n});\n\nexport const cancelUploadByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"cancelByClient\",\n ],\n inputCodec: RequiredDocumentMetadata,\n outputCodec: t.unknown,\n});\n\nexport const sendLinkToClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"upload\",\n \"sendLinkToClient\",\n ],\n inputCodec: t.unknown,\n outputCodec: t.unknown,\n});\n\nexport const removeDocumentByClient = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"removeByClient\"],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const removeDocument = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"document\", \"remove\"],\n inputCodec: t.type({\n docId: NonEmptyString,\n }),\n outputCodec: t.unknown,\n});\n\nexport const CheckRequiredDocumentsStatus = t.type({\n requiredDocumentsReceived: t.boolean,\n});\n\nexport const checkRequiredDocuments = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkRequiredDocuments\",\n ],\n inputCodec: t.void,\n outputCodec: CheckRequiredDocumentsStatus,\n});\n\nconst CreditorData = t.type(\n {\n code: NonEmptyString,\n name: NonEmptyString,\n },\n \"CreditorData\"\n);\n\nexport type CreditorData = t.TypeOf;\n\nconst LoanProviderOutput = t.type(\n {\n loanProviderList: nonEmptyArray(CreditorData),\n },\n \"LoanProviderOutput\"\n);\n\nexport type LoanProviderOutput = t.TypeOf;\n\nexport const loanProviders = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"creditBureau\", \"loanProviders\"],\n inputCodec: t.void,\n outputCodec: LoanProviderOutput,\n});\n\nconst SelectLoanForRefinancingInput = t.type(\n {\n recordId: NonEmptyString,\n selectedForRefinance: t.boolean,\n selectedForRepaid: t.boolean,\n type: LoanType,\n },\n \"SelectLoanForRefinancingInput\"\n);\n\nexport type SelectLoanForRefinancingInput = t.TypeOf<\n typeof SelectLoanForRefinancingInput\n>;\n\nconst SelectLoanForRefinancingOutput = t.type(\n {\n maxLoanAmount: NonNegative,\n },\n \"SelectLoanForRefinancingOutput\"\n);\n\nexport type SelectLoanForRefinancingOutput = t.TypeOf<\n typeof SelectLoanForRefinancingOutput\n>;\n\nexport const selectLoanForRefinancing = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"selectLoanForRefinancing\",\n ],\n inputCodec: SelectLoanForRefinancingInput,\n outputCodec: SelectLoanForRefinancingOutput,\n});\n\nconst LoanProviderSelectedInput = t.type(\n {\n creditor: NonEmptyString,\n type: LoanType,\n },\n \"LoanProviderSelectedInput\"\n);\n\nexport type LoanProviderSelectedInput = t.TypeOf<\n typeof LoanProviderSelectedInput\n>;\n\nconst LoanProviderSelectedOutput = optionFromUndefined(\n t.type({\n accountForDisbursmentHint: RuntimeLocaleKey,\n variableSymbolHint: optionFromUndefined(RuntimeLocaleKey),\n accountForDisbursment: optionFromUndefined(NonEmptyString),\n accountReadonly: t.boolean,\n }),\n \"LoanProviderSelectedOutput\"\n);\n\nexport type LoanProviderSelectedOutput = t.TypeOf<\n typeof LoanProviderSelectedOutput\n>;\n\nexport const eqLoanProviderSelectedInput = eq.getStructEq({\n creditor: eq.eqString,\n type: eq.eqString,\n});\n\nexport const loanProviderSelected = apiCall({\n inputEq: eqLoanProviderSelectedInput,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"loanProviderSelected\",\n ],\n inputCodec: LoanProviderSelectedInput,\n outputCodec: LoanProviderSelectedOutput,\n});\n\nexport const submitAccountsForRefinancing = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"submitAccountsForRefinancing\",\n ],\n inputCodec: AccountsForRefinancingOutput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nexport const submitRepaidLoans = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"creditBureau\",\n \"submitRepaidLoans\",\n ],\n inputCodec: RepaidLoansOutput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst LTVWithinLimitsStatus = t.keyof(\n {\n PENDING: true,\n OK: true,\n NOK: true,\n },\n \"LTVWithinLimitsStatus\"\n);\n\nconst IncomeAndPersonalDataOutput = t.type(\n {\n needAdditionalIncomeStep: t.boolean,\n isReworkDoPolling: t.boolean,\n ltvWithinLimitsStatus: optionFromUndefined(LTVWithinLimitsStatus),\n hasAdditionalIncome: t.boolean,\n },\n \"IncomeAndPersonalDataOutput\"\n);\n\nexport type IncomeAndPersonalDataOutput = t.TypeOf<\n typeof IncomeAndPersonalDataOutput\n>;\n\nexport const confirmIncomeAndPersonalData = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"confirm\"],\n inputCodec: IncomeAndPersonalDataDTO,\n outputCodec: IncomeAndPersonalDataOutput,\n});\n\nexport const resetCredentialsProcess = apiCall({\n path: [\n \"clients\",\n \"identification\",\n \"mobileCreateProfile\",\n \"credentials\",\n \"resetCredentialsProcess\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst SendPushOutput = t.intersection(\n [\n smartKeyApi.SendPushOutput,\n t.type(\n {\n applicationRejected: t.boolean,\n },\n \"LoansAuthorizationSendPushOutput\"\n ),\n ],\n \"SendPushOutput\"\n);\nexport type SendPushOutput = t.TypeOf;\n\nexport const authorizeWithPush = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"authorizeWithPush\"],\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n outputCodec: SendPushOutput,\n});\n\nexport const GenerateQRCodeError = t.type(\n {\n error: t.keyof(\n {\n UserBlocked: true,\n ApplicationRejected: true,\n },\n \"LoansAuthorizationGenerateQRCodeError\"\n ),\n },\n \"LoansAuthorizationGenerateQRCodeOutput\"\n);\n\nconst GenerateQRCodeOutput = t.union(\n [smartKeyApi.GenerateQRCodeSuccess, GenerateQRCodeError],\n \"GenerateQRCodeOutput\"\n);\nexport type GenerateQRCodeOutput = t.TypeOf;\n\nexport const generateAuthorizationQR = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"generateAuthorizationQR\"],\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n outputCodec: GenerateQRCodeOutput,\n});\n\nconst PersonalDataOptionsNotReadyResult = t.type(\n {\n status: t.literal(\"RETRY\"),\n },\n \"PersonalDataOptionsNotReadyResult\"\n);\n\nconst PersonalDataAttemptsExceededOutput = t.type(\n {\n status: t.literal(\"ATTEMPTS_EXCEEDED\"),\n },\n \"PersonalDataAttemptsExceededOutput\"\n);\n\nconst PersonalDataOptionsApprovedOutput = t.type(\n {\n status: t.literal(\"OK\"),\n incomeOptions: IncomeOptionsOutput,\n personalDataOptions: PersonalDataFromOutput,\n result: CreditChecksApproved,\n },\n \"PersonalDataOptionsApprovedOutput\"\n);\n\nexport type PersonalDataOptionsApprovedOutput = t.TypeOf<\n typeof PersonalDataOptionsApprovedOutput\n>;\n\nconst PersonalDataOptionsRejectedOutput = t.type(\n {\n status: t.literal(\"OK\"),\n result: CreditChecksRejected,\n },\n \"PersonalDataOptionsRejectedOutput\"\n);\n\nexport const PersonalDataOptionsOutput = t.union(\n [\n PersonalDataOptionsNotReadyResult,\n PersonalDataOptionsApprovedOutput,\n PersonalDataOptionsRejectedOutput,\n PersonalDataAttemptsExceededOutput,\n ],\n \"PersonalDataOptionsOutput\"\n);\n\nexport type PersonalDataOptionsOutput = t.TypeOf<\n typeof PersonalDataOptionsOutput\n>;\n\nexport const getPersonalDataOptions = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: PersonalDataOptionsOutput,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"getPersonalDataOptions\",\n ],\n});\n\nexport const getIncome = apiCall({\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"get\"],\n outputCodec: t.type({ income: IncomeOutput }),\n});\n\nexport const AccCollectionErrorCode = t.type(\n {\n id: t.string,\n code: t.string,\n },\n \"AccCollectionErrorCode\"\n);\n\nexport const DisbursementAccountsError = t.union([\n AccCollectionErrorCode,\n GenericError,\n]);\n\nexport const getDisbursementAccounts = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"offer\",\n \"getDisbursementAccounts\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: t.array(LocalizedString),\n errorCodec: DisbursementAccountsError,\n});\n\nconst KycNeeded = t.type(\n {\n isKycNeeded: t.boolean,\n },\n \"KycNeeded\"\n);\n\nexport type KycNeeded = t.TypeOf;\n\nexport const isKycNeeded = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"knowYourCustomer\",\n \"isKycNeeded\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: KycNeeded,\n});\n\nconst ExternalLiabilitiesSelected = t.type(\n {\n externalLiabilities: t.boolean,\n },\n \"ExternalLiabilitiesSelected\"\n);\n\nexport type ExternalLiabilitiesSelected = t.TypeOf<\n typeof ExternalLiabilitiesSelected\n>;\n\nexport const areExternalLiabilitiesSelected = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"customerOffer\",\n \"areExternalLiabilitiesSelected\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ExternalLiabilitiesSelected,\n});\n\nexport const CBRejectedOutput = t.type(\n {\n cbRejected: t.boolean,\n },\n \"CBRejectedOutput\"\n);\nexport type CBRejectedOutput = t.TypeOf;\n\nexport const getIsCBRejected = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"application\", \"isCBRejected\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CBRejectedOutput,\n});\n\nexport const LTVWithinLimitsOutput = t.type(\n {\n status: LTVWithinLimitsStatus,\n },\n \"LTVWithinLimitsOutput\"\n);\nexport type LTVWithinLimitsOutput = t.TypeOf;\n\nexport const checkLtvWithinLimits = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"application\",\n \"isLtvWithinLimits\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: LTVWithinLimitsOutput,\n});\n\nexport const setDisbursementAccount = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"disbursementAccount\"],\n inputCodec: LocalizedString,\n inputEq: eq.eqString,\n outputCodec: t.unknown,\n});\n\nconst GetApplicationOutput = t.type({\n loanType: t.literal(\"SL\"),\n restoreData: RestoreNewestLoanApplicationOutput,\n});\n\nexport type GetApplicationOutput = t.TypeOf;\n\nexport const getApplicationWithRestoreDataAndRestore = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"client\",\n \"getApplicationWithRestoreDataAndRestore\",\n ],\n inputCodec: t.type({\n applicationId: t.string,\n }),\n inputEq: eq.getStructEq({\n applicationId: eq.eqString,\n }),\n outputCodec: GetApplicationOutput,\n errorCodec: RestoreError,\n});\n\nexport const getLastSavedLoan = apiCall({\n path: [\"packages\", \"loans\", \"client\", \"getLastSavedLoan\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: GetApplicationOutput,\n});\n\nconst CheckApplicationStatusOutput = t.type({\n lfStatus: LFStatus,\n rejected: t.boolean,\n});\n\nexport type CheckApplicationStatus = t.TypeOf<\n typeof CheckApplicationStatusOutput\n>;\n\nexport const checkApplicationStatus = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"checkApplicationStatus\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CheckApplicationStatusOutput,\n});\n\nconst SLResultsMicropayment = t.type({ status: t.literal(\"MICROPAYMENT\") });\ntype SLResultsMicropayment = t.TypeOf;\n\nconst SLResultsPending = t.type({ status: t.literal(\"PENDING\") });\ntype SLResultsPending = t.TypeOf;\n\nconst SLResultsFailure = t.type({ status: t.literal(\"ERROR\") });\nconst SLResultsRejected = t.type({ status: t.literal(\"REJECTED\") });\nconst SLResultsRedirectToTheBank = t.type({\n status: t.literal(\"REDIRECT_TO_THE_BANK\"),\n});\nconst SLResultsContinue = t.type({ status: t.literal(\"CONTINUE\") });\ntype SLResultsContinue = t.TypeOf;\n\nconst SLResultsNotifyClientOfDelay = t.type({\n status: t.literal(\"NOTIFY_CLIENT_OF_DELAY\"),\n});\nconst SLResultsNotifyClientOfDelayWithErrors = t.type({\n status: t.literal(\"NOTIFY_CLIENT_OF_DELAY_ERRORS\"),\n});\n\nconst SLResultsSuccess = t.type({\n status: t.literal(\"DONE\"),\n stepsResults: nonEmptyArray(\n t.type({\n type: t.keyof({ SUCCESS: true, ERROR: true }),\n message: LocalizedString,\n })\n ),\n});\n\nexport type SLResultsSuccess = t.TypeOf;\n\nconst SLResultsOutput = t.union([\n SLResultsPending,\n SLResultsFailure,\n SLResultsRejected,\n SLResultsRedirectToTheBank,\n SLResultsNotifyClientOfDelay,\n SLResultsNotifyClientOfDelayWithErrors,\n SLResultsSuccess,\n SLResultsContinue,\n SLResultsMicropayment,\n]);\n\nexport type SLResultsOutput = t.TypeOf;\n\nexport const slResults = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"results\"],\n inputCodec: t.void,\n outputCodec: SLResultsOutput,\n});\n\nconst SignatureType = t.keyof({\n OtpSms: true,\n Click2Sign: true,\n});\n\nexport type SignatureType = t.TypeOf;\n\nexport const SignatureTypeOutput = t.type(\n {\n signatureType: optionFromNullable(SignatureType),\n },\n \"SignatureTypeOutput\"\n);\n\nexport type SignatureTypeOutput = t.TypeOf;\n\nexport const getSignatureType = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"getSignatureType\"],\n outputCodec: SignatureTypeOutput,\n});\n\nexport const GetBrokersInput = t.type(\n {\n partialEmail: t.string,\n },\n \"GetBrokersInput\"\n);\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\");\n\nexport interface GetBrokersOutput extends t.TypeOf {}\n\nexport const getBrokers = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"assigned-broker\", \"brokers\"],\n inputCodec: GetBrokersInput,\n inputEq: eqGetBrokersInput,\n outputCodec: GetBrokersOutput,\n});\n\nexport const getAssignedBrokerForBanker = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"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\", \"loans\", \"standard-loan\", \"assigned-broker\", \"save\"],\n inputCodec: saveAssignedBrokerForBankerInput,\n inputEq: eqSaveAssignedBrokerForBankerInput,\n outputCodec: saveAssignedBrokerForBankerOutput,\n});\n\nexport const removeAssignedBrokerForBanker = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"assigned-broker\", \"remove\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: t.unknown,\n});\n\nconst ApplicationLockedInput = t.type(\n {\n applicationId: t.string,\n },\n \"ApplicationLockedInput\"\n);\n\nexport const ApplicationLockedOutput = t.type({\n locked: t.boolean,\n});\nexport type ApplicationLockedOutput = t.TypeOf;\n\nexport const isApplicationLocked = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"applicationState\",\n \"isApplicationLocked\",\n ],\n inputCodec: ApplicationLockedInput,\n inputEq: eq.getStructEq({ applicationId: eq.eqString }),\n outputCodec: ApplicationLockedOutput,\n});\n\nexport const linkGenerationNow = apiCall({\n inputEq: eqLinkGenerationInput,\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"email\",\n \"activationLink\",\n \"now\",\n ],\n inputCodec: LinkGenerationInput,\n outputCodec: LinkGenerationOutput,\n errorCodec: LinkGenerationError,\n});\n\nexport const packagesList = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"packages\", \"list\"],\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n outputCodec: PackageListResponse,\n errorCodec: GetListError,\n});\n\nexport const choosePackageType = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"packages\", \"type\"],\n inputEq: eq.fromEquals(constFalse),\n inputCodec: ChoosePackageTypeInput,\n outputCodec: t.unknown,\n});\n\nexport const transitionToMasterCard = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"packages\",\n \"transitionToMasterCard\",\n ],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const initVirtualCard = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"virtualCard\",\n \"initVirtualCard\",\n ],\n inputEq: eq.fromEquals(constFalse),\n inputCodec: t.void,\n outputCodec: InitVirtualCardResponse,\n});\n\nexport const savePhysicalCardValue = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"virtualCard\",\n \"savePhysicalCardValue\",\n ],\n inputCodec: PhysicalCardInput,\n outputCodec: t.unknown,\n});\n\nexport const virtualCardNext = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"virtualCard\", \"next\"],\n inputCodec: t.void,\n outputCodec: t.unknown,\n});\n\nexport const needsCaptcha = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"identification\", \"needCaptcha\"],\n inputCodec: t.void,\n outputCodec: NeedCaptchaOutput,\n});\n","import { boolean, option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { Reader } from \"fp-ts/Reader\";\nimport {\n CreditBureauStatus,\n GenericLoanResponseOutput,\n LFStatus,\n LoanOffer,\n OfferTypeDecision,\n OfferTypeOutput,\n ParallelFlowParameters,\n RestoreNewestLoanApplicationChooseOfferToKycStepsOutput,\n RestoreNewestLoanApplicationMicroPaymentStepsOutput,\n RestoreNewestLoanApplicationOtherStepsOutput,\n RestoreNewestLoanApplicationOutput,\n RestoreNewestLoanApplicationPersonalDataStepOutput,\n SignatureStatus,\n StartLoanApplicationInput,\n TransactionsInfo,\n} from \"./api\";\nimport { ReworkOldValuesOutput, ReworkStep } from \"./Rework/api\";\nimport { RefuseExistingClientReason } from \"./domain\";\nimport { constant, constFalse, pipe } from \"fp-ts/function\";\nimport { OfferType } from \"./OfferList/OfferList\";\nimport { PersonalDataFromOutput } from \"./Confirmation/domain\";\nimport { CPIAdditionalQuestions, UKontoPackageType } from \"./CustomerOffer/api\";\nimport {\n ApplicationProductType,\n ApplicationStatus,\n} from \"../Common/ProcessStoreList/api\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { ExtractedDataResult } from \"../UploadDocuments/types\";\nimport { mergeExtractDataDocumentsOutput } from \"../UploadDocuments/utils\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { LocaleKey } from \"../intl\";\n\nexport interface Rework {\n needContractsUpdate: boolean;\n reworkSteps: Option>;\n oldValues: Option;\n newValues: Option;\n reworkAll: boolean;\n}\n\ninterface LoadingState {\n type: \"Loading\";\n}\n\nexport function loading(): LoadingState {\n return { type: \"Loading\" };\n}\n\ninterface LandingState {\n type: \"Landing\";\n}\n\ninterface MaxNumberChangesReachedState {\n type: \"MaxNumberChangesReached\";\n}\n\nexport function landing(): LandingState {\n return { type: \"Landing\" };\n}\n\nexport function maxNumberChangesReached(): MaxNumberChangesReachedState {\n return { type: \"MaxNumberChangesReached\" };\n}\n\ninterface PhoneAndEmailVerificationState {\n type: \"PhoneAndEmailVerification\";\n payload: {\n loanOffer: Option;\n };\n}\n\ninterface Select3PState {\n type: \"Select3P\";\n payload: {\n loanOffer: LoanOffer;\n };\n}\n\ninterface AddPhoneNumberState {\n type: \"AddPhoneNumber\";\n}\n\nexport function verifyPhoneAndEmail(\n loanOffer: Option\n): PhoneAndEmailVerificationState {\n return {\n type: \"PhoneAndEmailVerification\",\n payload: { loanOffer },\n };\n}\n\nexport function select3P(loanOffer: LoanOffer): Select3PState {\n return {\n type: \"Select3P\",\n payload: { loanOffer },\n };\n}\n\ninterface UploadIDState {\n type: \"UploadID\";\n payload: { loanOffer: LoanOffer };\n}\n\nexport function uploadId(loanOffer: LoanOffer): UploadIDState {\n return { type: \"UploadID\", payload: { loanOffer } };\n}\n\ninterface ExistingClientSuspenseState {\n type: \"ExistingClientSuspense\";\n payload: { loanOffer: Option; isApplicationExisting: boolean };\n}\n\nexport function existingClientSuspense(\n loanOffer: Option,\n isApplicationExisting: boolean\n): ExistingClientSuspenseState {\n return {\n type: \"ExistingClientSuspense\",\n payload: { loanOffer, isApplicationExisting },\n };\n}\n\ninterface CreditChecksState {\n type: \"CreditChecks\";\n payload: {\n loanOffer: LoanOffer;\n initialConsent: Option;\n getIncome: boolean;\n rework: Rework;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n cpiAdditionalQuestions: Option;\n };\n}\n\nexport function creditChecks(\n loanOffer: LoanOffer,\n initialConsent: Option,\n getIncome: boolean,\n rework: Rework,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n cpiAdditionalQuestions: Option\n): CreditChecksState {\n return {\n type: \"CreditChecks\",\n payload: {\n loanOffer,\n initialConsent,\n getIncome,\n rework,\n hasRefinancingCredits,\n hasRepaidLoans,\n cpiAdditionalQuestions,\n },\n };\n}\n\ninterface ExistingClientState {\n type: \"ExistingClient\";\n reason: RefuseExistingClientReason;\n}\n\nexport function existingClient(\n reason: RefuseExistingClientReason\n): ExistingClientState {\n return { type: \"ExistingClient\", reason };\n}\n\ninterface ExistingApplication3PErrorState {\n type: \"ExistingApplication3PError\";\n}\n\nexport function existingApplication3PError(): ExistingApplication3PErrorState {\n return { type: \"ExistingApplication3PError\" };\n}\n\ntype RestoreApplicationPayload =\n | {\n restoredData: RestoreNewestLoanApplicationOutput;\n applicationStatus: Option;\n loanOffer: Option;\n rework: Rework;\n isErrorFetchingRestoredData: false;\n parallelFlowParameters: ParallelFlowParameters;\n cardProviderChange: boolean;\n }\n | {\n isErrorFetchingRestoredData: true;\n loanOffer: Option;\n parallelFlowParameters: ParallelFlowParameters;\n };\n\ninterface RestoreApplicationState {\n type: \"RestoreApplication\";\n payload: RestoreApplicationPayload;\n}\n\nexport function restoreApplication(\n payload: RestoreApplicationPayload\n): RestoreApplicationState {\n return {\n type: \"RestoreApplication\",\n payload,\n };\n}\n\ninterface CustomerOfferState {\n type: \"CustomerOffer\";\n payload: {\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function customerOffer(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): CustomerOfferState {\n return {\n type: \"CustomerOffer\",\n payload: {\n loanOffer,\n personalDataOptions,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface CheckAdditionalIncomesState {\n type: \"CheckAdditionalIncomes\";\n payload: {\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n needsAdditionalIncome: Option;\n hasAdditionalIncome: Option;\n rework: Rework;\n };\n}\n\nfunction checkAdditionalIncomes(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n needsAdditionalIncome: Option,\n hasAdditionalIncome: Option,\n rework: Rework\n): CheckAdditionalIncomesState {\n return {\n type: \"CheckAdditionalIncomes\",\n payload: {\n loanOffer,\n hasRefinancingCredits,\n hasRepaidLoans,\n personalDataOptions,\n initialConsent,\n cpiAdditionalQuestions,\n needsAdditionalIncome,\n hasAdditionalIncome,\n rework,\n },\n };\n}\n\ninterface ExpensesAndAdditionalIncomeState {\n type: \"ExpensesAndAdditionalIncome\";\n payload: {\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n needsAdditionalIncome: Option;\n hasAdditionalIncome: Option;\n rework: Rework;\n };\n}\n\nexport function expensesAndAdditionalIncome(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n needsAdditionalIncome: Option,\n hasAdditionalIncome: Option,\n rework: Rework\n): ExpensesAndAdditionalIncomeState {\n return {\n type: \"ExpensesAndAdditionalIncome\",\n payload: {\n loanOffer,\n hasRefinancingCredits,\n hasRepaidLoans,\n personalDataOptions,\n initialConsent,\n cpiAdditionalQuestions,\n needsAdditionalIncome,\n hasAdditionalIncome,\n rework,\n },\n };\n}\n\ninterface SaveCustomerOfferSuspenseState {\n type: \"SaveCustomerOfferSuspense\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function saveCustomerOfferSuspense(\n offerType: OfferType,\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): SaveCustomerOfferSuspenseState {\n return {\n type: \"SaveCustomerOfferSuspense\",\n payload: {\n offerType,\n loanOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface OfferListState {\n type: \"OfferList\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function offerList(\n offerType: OfferType,\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): OfferListState {\n return {\n type: \"OfferList\",\n payload: {\n offerType,\n loanOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface CheckExpensesOffersState {\n type: \"CheckExpensesOffers\";\n payload: {\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function checkExpensesOffers(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): CheckExpensesOffersState {\n return {\n type: \"CheckExpensesOffers\",\n payload: {\n loanOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface SendAdditionalIncomeState {\n type: \"SendAdditionalIncome\";\n payload: {\n loanOffer: LoanOffer;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function sendAdditionalIncome(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): SendAdditionalIncomeState {\n return {\n type: \"SendAdditionalIncome\",\n payload: {\n loanOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface OfferReviewState {\n type: \"OfferReview\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function offerReview(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): OfferReviewState {\n return {\n type: \"OfferReview\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface OfferReviewPushState {\n type: \"OfferReviewPush\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n disbursementAccount: Option;\n isRemoteSignature: boolean;\n };\n}\n\nexport function offerReviewPush(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework,\n disbursementAccount: Option,\n isRemoteSignature: boolean\n): OfferReviewPushState {\n return {\n type: \"OfferReviewPush\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n disbursementAccount,\n isRemoteSignature,\n },\n };\n}\n\ninterface PackageSelectionState {\n type: \"PackageSelection\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function packageSelection(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): PackageSelectionState {\n return {\n type: \"PackageSelection\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface VirtualCardState {\n type: \"VirtualCard\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function virtualCard(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): VirtualCardState {\n return {\n type: \"VirtualCard\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface AccountsForRefinancingState {\n type: \"AccountsForRefinancing\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n showVirtualCard?: boolean;\n };\n}\nexport function accountsForRefinancing(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework,\n showVirtualCard?: boolean\n): AccountsForRefinancingState {\n return {\n type: \"AccountsForRefinancing\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n showVirtualCard,\n },\n };\n}\n\ninterface RepaidLoansState {\n type: \"RepaidLoans\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n showVirtualCard?: boolean;\n };\n}\n\nexport function repaidLoans(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework,\n showVirtualCard?: boolean\n): RepaidLoansState {\n return {\n type: \"RepaidLoans\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n showVirtualCard,\n },\n };\n}\n\ninterface KYCState {\n type: \"KYC\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n transactionsInfo: Option;\n isKycNeeded: boolean;\n rework: Rework;\n showVirtualCard?: boolean;\n };\n}\n\nexport function kyc(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n cpiAdditionalQuestions: Option,\n initialConsent: StartLoanApplicationInput,\n transactionsInfo: Option,\n rework: Rework,\n showVirtualCard?: boolean\n): KYCState {\n return {\n type: \"KYC\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n hasRefinancingCredits,\n hasRepaidLoans,\n personalDataOptions,\n initialConsent,\n cpiAdditionalQuestions,\n transactionsInfo,\n isKycNeeded: true,\n rework,\n showVirtualCard,\n },\n };\n}\n\ninterface ReloadSuspenseState {\n type: \"ReloadSuspense\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n transactionsInfo: Option;\n isKycNeeded: boolean;\n rework: Rework;\n };\n}\n\nexport function reloadSuspense(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n cpiAdditionalQuestions: Option,\n initialConsent: StartLoanApplicationInput,\n transactionsInfo: Option,\n rework: Rework\n): ReloadSuspenseState {\n return {\n type: \"ReloadSuspense\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n hasRefinancingCredits,\n hasRepaidLoans,\n personalDataOptions,\n initialConsent,\n cpiAdditionalQuestions,\n transactionsInfo,\n isKycNeeded: true,\n rework,\n },\n };\n}\n\ninterface AfterSignatureState {\n type: \"AfterSignature\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n isKycNeeded: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n shouldAskCredential: boolean;\n restoredData: Option;\n lfStatus: Option;\n };\n}\n\nexport function afterSignature(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n isKycNeeded: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework,\n shouldAskCredential: boolean,\n restoredData: Option,\n lfStatus: Option\n): AfterSignatureState {\n return {\n type: \"AfterSignature\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n isKycNeeded,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n shouldAskCredential,\n restoredData,\n lfStatus,\n },\n };\n}\n\ninterface MicropaymentState {\n type: \"Micropayment\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function micropayment(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework\n): MicropaymentState {\n return {\n type: \"Micropayment\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n },\n };\n}\n\ninterface MicropaymentOverviewState {\n type: \"MicropaymentOverview\";\n}\n\nexport function micropaymentOverview(): MicropaymentOverviewState {\n return { type: \"MicropaymentOverview\" };\n}\n\ninterface FollowUpAndSignatureState {\n type: \"FollowUpAndSignature\";\n payload: {\n offerType: OfferType;\n loanOffer: LoanOffer;\n selectedOffer: GenericLoanResponseOutput;\n personalDataOptions: PersonalDataFromOutput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n isKycNeeded: boolean;\n initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n shouldAskCredential: boolean;\n restoredData: Option;\n };\n}\n\nexport function followUpAndSignature(\n offerType: OfferType,\n loanOffer: LoanOffer,\n selectedOffer: GenericLoanResponseOutput,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n isKycNeeded: boolean,\n initialConsent: StartLoanApplicationInput,\n cpiAdditionalQuestions: Option,\n rework: Rework,\n shouldAskCredential: boolean,\n restoredData: Option\n): FollowUpAndSignatureState {\n return {\n type: \"FollowUpAndSignature\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n hasRepaidLoans,\n isKycNeeded,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n shouldAskCredential,\n restoredData,\n },\n };\n}\n\nexport type RejectionReason =\n | \"CBRejected\"\n | \"BonitaRejected\"\n | \"LFRejected\"\n | \"RestoredTooEarly\"\n | \"RejectedWithLead\"\n | \"ExposureExceeded\"\n | \"phoneNumberNotVerifiedCF\"\n | \"phoneNumberMissingCF\"\n | \"invalidAgeCF\"\n | \"foreignClientCF\"\n | \"hasBlockingNotesCF\"\n | \"highRiskClientCF\"\n | \"hasNotPasswordForCommunicationCF\"\n | \"KYC_FIXED_EZY\"\n | \"KYC_FIXED_EZY_UPDATE_CONTACTS\"\n | \"UPDATE_CONTACTS\"\n | \"KYC_ID_FIXED_EZY\"\n | \"KYC_ID_FIXED_EZY_UPDATE_CONTACTS\"\n | \"ID_FIXED_EZY\"\n | \"ID_FIXED_EZY_UPDATE_CONTACTS\"\n | \"UPDATE_ID\"\n | \"UPDATE_ID_CONTACTS\"\n | \"UPDATE_PASSWORD\"\n | \"UPDATE_ID_CONTACTS_PASSWORD\"\n | \"UPDATE_ID_PASSWORD\"\n | \"UPDATE_ID_OTHER_THAN_AUTH_ID\"\n | \"UPDATE_ID_MISSING_INFORMATION\"\n | \"USER_VALIDATION_KO_REDIRECT_BRANCH\"\n | \"privateClient\";\n\ninterface RejectedState {\n type: \"Rejected\";\n payload: { rejectionReason: RejectionReason };\n}\n\nexport function rejected(rejectionReason: RejectionReason): RejectedState {\n return {\n type: \"Rejected\",\n payload: { rejectionReason },\n };\n}\n\ninterface SummaryState {\n type: \"Summary\";\n payload: {\n productType: Option;\n hasRefinancing: boolean;\n lfStatus: Option;\n };\n}\n\nexport function summary(\n productType: Option,\n hasRefinancing: boolean,\n lfStatus: Option\n): SummaryState {\n return {\n type: \"Summary\",\n payload: { productType, hasRefinancing, lfStatus },\n };\n}\n\nexport function error(message: LocaleKey): ErrorState {\n return {\n type: \"Error\",\n payload: { message },\n };\n}\n\ninterface ErrorState {\n type: \"Error\";\n payload: {\n message: LocaleKey;\n };\n}\n\ninterface ErrorAction {\n type: \"Error\";\n payload: { message: LocaleKey };\n}\n\nexport function errorAction(message: LocaleKey): ErrorAction {\n return {\n type: \"Error\",\n payload: { message },\n };\n}\n\ninterface UploadDocumentsState {\n type: \"UploadDocuments\";\n payload: {\n productType: Option;\n hasRefinancing: boolean;\n hasRepaidLoans: boolean;\n lfStatus: Option;\n loanOffer: LoanOffer;\n rework: Rework;\n requiredDocumentsUpToDate?: boolean;\n };\n}\n\nexport function uploadDocuments(\n productType: Option,\n hasRefinancing: boolean,\n hasRepaidLoans: boolean,\n lfStatus: Option,\n loanOffer: LoanOffer,\n rework: Rework,\n requiredDocumentsUpToDate?: boolean\n): UploadDocumentsState {\n return {\n type: \"UploadDocuments\",\n payload: {\n productType,\n hasRefinancing,\n hasRepaidLoans,\n lfStatus,\n loanOffer,\n rework,\n requiredDocumentsUpToDate,\n },\n };\n}\n\ninterface PersonalDataState {\n type: \"PersonalData\";\n payload: {\n loanOffer: LoanOffer;\n extractedData: Option;\n rework: Rework;\n };\n}\n\nexport function personalData(\n loanOffer: LoanOffer,\n extractedData: Option,\n rework: Rework\n): PersonalDataState {\n return {\n type: \"PersonalData\",\n payload: { loanOffer, extractedData, rework },\n };\n}\n\ntype RejectableSteps =\n | RestoreNewestLoanApplicationChooseOfferToKycStepsOutput\n | RestoreNewestLoanApplicationMicroPaymentStepsOutput\n | RestoreNewestLoanApplicationPersonalDataStepOutput\n | RestoreNewestLoanApplicationOtherStepsOutput;\n\nexport type State =\n | LoadingState\n | LandingState\n | Select3PState\n | PhoneAndEmailVerificationState\n | AddPhoneNumberState\n | UploadIDState\n | CreditChecksState\n | ExistingClientState\n | ExistingApplication3PErrorState\n | RestoreApplicationState\n | ApplicationLockedState\n | CustomerOfferState\n | ExpensesAndAdditionalIncomeState\n | CheckAdditionalIncomesState\n | OfferListState\n | SaveCustomerOfferSuspenseState\n | CheckExpensesOffersState\n | SendAdditionalIncomeState\n | OfferReviewState\n | OfferReviewPushState\n | PackageSelectionState\n | VirtualCardState\n | AccountsForRefinancingState\n | RepaidLoansState\n | KYCState\n | MicropaymentState\n | MicropaymentOverviewState\n | FollowUpAndSignatureState\n | RejectedState\n | SummaryState\n | UploadDocumentsState\n | PersonalDataState\n | ReloadSuspenseState\n | AfterSignatureState\n | ExistingClientSuspenseState\n | MaxNumberChangesReachedState\n | ErrorState;\n\nexport function foldState(\n matches: {\n [k in State[\"type\"]]: Reader, T>;\n }\n): Reader {\n return state => matches[state.type](state as any);\n}\n\ninterface GoBackAction {\n type: \"GoBack\";\n}\n\nexport function goBackAction(): GoBackAction {\n return { type: \"GoBack\" };\n}\n\ninterface GoToStepAction {\n type: \"GoToStep\";\n step:\n | \"VerifyPhoneAndEmail\"\n | \"UploadID\"\n | \"CreditChecks\"\n | \"CustomerOffer\"\n | \"ExpensesAndAdditionalIncome\"\n | \"OfferList\"\n | \"CheckExpensesOffers\"\n | \"SendAdditionalIncome\"\n | \"OfferReview\"\n | \"OfferReviewPush\"\n | \"KYC\"\n | \"PackageSelection\"\n | \"VirtualCard\"\n | \"AccountsForRefinancing\"\n | \"RepaidLoans\"\n | \"Micropayment\"\n | \"FollowUpAndSignature\"\n | \"UploadDocuments\"\n | \"ReworkNextStep\"\n | \"ReworkPreviousStep\"\n | \"PersonalData\";\n}\n\nexport function goToStepAction(step: GoToStepAction[\"step\"]): GoToStepAction {\n return { type: \"GoToStep\", step };\n}\n\ninterface LandingAction {\n type: \"Landing\";\n}\n\nexport function landingAction(): LandingAction {\n return { type: \"Landing\" };\n}\n\ninterface ReloadAction {\n type: \"Reload\";\n}\n\nexport function reloadAction(): ReloadAction {\n return { type: \"Reload\" };\n}\n\ninterface VerifyPhoneAndEmailAction {\n type: \"VerifyPhoneAndEmail\";\n payload: {\n loanOffer: Option;\n };\n}\n\nexport function verifyPhoneAndEmailAction(\n loanOffer: Option\n): VerifyPhoneAndEmailAction {\n return { type: \"VerifyPhoneAndEmail\", payload: { loanOffer } };\n}\n\ninterface Select3PAction {\n type: \"Select3P\";\n payload: {\n loanOffer: LoanOffer;\n };\n}\n\nexport function select3PAction(loanOffer: LoanOffer): Select3PAction {\n return { type: \"Select3P\", payload: { loanOffer } };\n}\n\ninterface UploadIDAction {\n type: \"UploadID\";\n payload: { loanOffer: LoanOffer };\n}\n\nexport function uploadIdAction(loanOffer: LoanOffer): UploadIDAction {\n return { type: \"UploadID\", payload: { loanOffer } };\n}\n\ninterface ExistingClientSuspenseAction {\n type: \"ExistingClientSuspense\";\n payload: { loanOffer: Option; isApplicationExisting: boolean };\n}\n\nexport function existingClientSuspenseAction(\n loanOffer: Option,\n isApplicationExisting: boolean\n): ExistingClientSuspenseAction {\n return {\n type: \"ExistingClientSuspense\",\n payload: { loanOffer, isApplicationExisting },\n };\n}\n\ninterface CreditChecksAction {\n type: \"CreditChecks\";\n payload: {\n loanOffer: LoanOffer;\n };\n}\n\nexport function creditChecksAction(loanOffer: LoanOffer): CreditChecksAction {\n return {\n type: \"CreditChecks\",\n payload: { loanOffer },\n };\n}\n\ninterface ExistingClientAction {\n type: \"ExistingClient\";\n reason: RefuseExistingClientReason;\n}\n\nexport function existingClientAction(\n reason: RefuseExistingClientReason\n): ExistingClientAction {\n return { type: \"ExistingClient\", reason };\n}\n\ninterface ExistingApplication3PErrorAction {\n type: \"ExistingApplication3PError\";\n}\n\nexport function existingApplication3PErrorAction(): ExistingApplication3PErrorAction {\n return { type: \"ExistingApplication3PError\" };\n}\n\ninterface RestoreApplicationAction {\n type: \"RestoreApplication\";\n payload: RestoreApplicationPayload;\n}\n\nexport function restoreApplicationAction(\n payload: RestoreApplicationPayload\n): RestoreApplicationAction {\n return {\n type: \"RestoreApplication\",\n payload,\n };\n}\n\ninterface ApplicationLockedState {\n type: \"ApplicationLocked\";\n}\n\nexport function applicationLocked(): ApplicationLockedState {\n return {\n type: \"ApplicationLocked\",\n };\n}\n\ninterface ApplicationLockedAction {\n type: \"ApplicationLocked\";\n}\n\nexport function applicationLockedAction(): ApplicationLockedAction {\n return {\n type: \"ApplicationLocked\",\n };\n}\n\ninterface CustomerOfferAction {\n type: \"CustomerOffer\";\n payload: {\n personalDataOptions: PersonalDataFromOutput;\n startLoanApplicationConsent: StartLoanApplicationInput;\n };\n}\n\nexport function customerOfferAction(\n personalDataOptions: PersonalDataFromOutput,\n startLoanApplicationConsent: StartLoanApplicationInput\n): CustomerOfferAction {\n return {\n type: \"CustomerOffer\",\n payload: { personalDataOptions, startLoanApplicationConsent },\n };\n}\n\ninterface ExpensesAndAdditionalIncomeAction {\n type: \"ExpensesAndAdditionalIncome\";\n payload:\n | {\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n restoredPersonalDataOptions: Option;\n fromBack: false;\n }\n | {\n needsAdditionalIncome: Option;\n hasAdditionalIncome: Option;\n fromBack: true;\n };\n}\n\nexport function expensesAndAdditionalIncomeAction(\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean\n): ExpensesAndAdditionalIncomeAction {\n return {\n type: \"ExpensesAndAdditionalIncome\",\n payload: {\n hasRefinancingCredits,\n hasRepaidLoans,\n restoredPersonalDataOptions: option.none,\n fromBack: false,\n },\n };\n}\n\nexport function expensesAndAdditionalIncomeAction2(\n needsAdditionalIncome: Option,\n hasAdditionalIncome: Option\n): ExpensesAndAdditionalIncomeAction {\n return {\n type: \"ExpensesAndAdditionalIncome\",\n payload: {\n needsAdditionalIncome,\n hasAdditionalIncome,\n fromBack: true,\n },\n };\n}\n\ninterface ExpensesAndAdditionalIncomeReworkAction {\n type: \"ExpensesAndAdditionalIncomeRework\";\n payload: {\n startLoanApplicationConsent: StartLoanApplicationInput;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n needsAdditionalIncome: Option;\n hasAdditionalIncome: Option;\n personalDataOptions: PersonalDataFromOutput;\n cpiAdditionalQuestions: Option;\n };\n}\n\nexport function expensesAndAdditionalIncomeReworkAction(\n startLoanApplicationConsent: StartLoanApplicationInput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n needsAdditionalIncome: Option,\n hasAdditionalIncome: Option,\n personalDataOptions: PersonalDataFromOutput,\n cpiAdditionalQuestions: Option\n): ExpensesAndAdditionalIncomeReworkAction {\n return {\n type: \"ExpensesAndAdditionalIncomeRework\",\n payload: {\n startLoanApplicationConsent,\n hasRefinancingCredits,\n hasRepaidLoans,\n needsAdditionalIncome,\n hasAdditionalIncome,\n personalDataOptions,\n cpiAdditionalQuestions,\n },\n };\n}\n\ninterface SaveCustomerOfferSuspenseAction {\n type: \"SaveCustomerOfferSuspense\";\n payload: {\n offerType: OfferType;\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function saveCustomerOfferSuspenseAction(\n offerType: OfferType\n): SaveCustomerOfferSuspenseAction {\n return {\n type: \"SaveCustomerOfferSuspense\",\n payload: { offerType, restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface OfferListAction {\n type: \"OfferList\";\n payload: {\n offerType: OfferType;\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function offerListAction(offerType: OfferType): OfferListAction {\n return {\n type: \"OfferList\",\n payload: { offerType, restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface OfferListReworkAction {\n type: \"OfferList_Rework\";\n payload: {\n offerType: OfferType;\n restoredPersonalDataOptions: PersonalDataFromOutput;\n initialConsent: StartLoanApplicationInput;\n };\n}\n\nexport function offerListReworkAction(\n offerType: OfferType,\n restoredPersonalDataOptions: PersonalDataFromOutput,\n initialConsent: StartLoanApplicationInput\n): OfferListReworkAction {\n return {\n type: \"OfferList_Rework\",\n payload: { offerType, restoredPersonalDataOptions, initialConsent },\n };\n}\n\ninterface CheckExpensesOffersAction {\n type: \"CheckExpensesOffers\";\n payload: {\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function checkExpensesOffersAction(): CheckExpensesOffersAction {\n return {\n type: \"CheckExpensesOffers\",\n payload: { restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface SendAdditionalIncomeAction {\n type: \"SendAdditionalIncome\";\n payload: {\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function sendAdditionalIncomeAction(): SendAdditionalIncomeAction {\n return {\n type: \"SendAdditionalIncome\",\n payload: { restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface OfferReviewAction {\n type: \"OfferReview\";\n payload: {\n selectedOffer: GenericLoanResponseOutput;\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function offerReviewAction(\n selectedOffer: GenericLoanResponseOutput\n): OfferReviewAction {\n return {\n type: \"OfferReview\",\n payload: { selectedOffer, restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface OfferReviewPushAction {\n type: \"OfferReviewPush\";\n payload: {\n selectedOffer: GenericLoanResponseOutput;\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function offerReviewPushAction(\n selectedOffer: GenericLoanResponseOutput\n): OfferReviewPushAction {\n return {\n type: \"OfferReviewPush\",\n payload: { selectedOffer, restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface PackageSelectionAction {\n type: \"PackageSelection\";\n payload: {\n loanOffer: LoanOffer;\n chosenCard: Option;\n };\n}\n\nexport function packageSelectionAction(\n loanOffer: LoanOffer,\n chosenCard: Option\n): PackageSelectionAction {\n return {\n type: \"PackageSelection\",\n payload: {\n loanOffer,\n chosenCard,\n },\n };\n}\n\ninterface VirtualCardAction {\n type: \"VirtualCard\";\n payload: {\n loanOffer: LoanOffer;\n };\n}\n\nexport function virtualCardAction(loanOffer: LoanOffer): VirtualCardAction {\n return {\n type: \"VirtualCard\",\n payload: {\n loanOffer,\n },\n };\n}\n\ninterface AccountsForRefinancingAction {\n type: \"AccountsForRefinancing\";\n payload: {\n restoredPersonalDataOptions: Option;\n hasRefinancingCredits: boolean;\n };\n}\n\nexport function accountsForRefinancingAction(\n hasRefinancingCredits: boolean\n): AccountsForRefinancingAction {\n return {\n type: \"AccountsForRefinancing\",\n payload: {\n restoredPersonalDataOptions: option.none,\n hasRefinancingCredits,\n },\n };\n}\n\ninterface RepaidLoansAction {\n type: \"RepaidLoans\";\n}\n\nexport function repaidLoansAction(): RepaidLoansAction {\n return {\n type: \"RepaidLoans\",\n };\n}\n\ninterface KYCAction {\n type: \"KYC\";\n payload: {\n restoredPersonalDataOptions: Option;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n };\n}\n\nexport function kycAction(\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean\n): KYCAction {\n return {\n type: \"KYC\",\n payload: {\n restoredPersonalDataOptions: option.none,\n hasRefinancingCredits,\n hasRepaidLoans,\n },\n };\n}\n\ninterface MicropaymentAction {\n type: \"Micropayment\";\n payload: {\n restoredPersonalDataOptions: Option;\n };\n}\n\nexport function micropaymentAction(): MicropaymentAction {\n return {\n type: \"Micropayment\",\n payload: { restoredPersonalDataOptions: option.none },\n };\n}\n\ninterface MicropaymentOverivewAction {\n type: \"MicropaymentOverview\";\n}\n\nexport function micropaymentOverviewAction(): MicropaymentOverivewAction {\n return { type: \"MicropaymentOverview\" };\n}\n\ninterface FollowUpAndSignatureAction {\n type: \"FollowUpAndSignature\";\n payload: {\n restoredPersonalDataOptions: Option;\n hasRefinancingCredits: boolean;\n hasRepaidLoans: boolean;\n isKycNeeded: boolean;\n askForCredentials?: boolean;\n };\n}\n\ninterface ReloadSuspenseAction {\n type: \"ReloadSuspense\";\n}\n\ninterface AfterSignatureAction {\n type: \"AfterSignature\";\n payload: {\n lfStatus: Option;\n };\n}\n\nexport function afterSignatureAction(\n lfStatus: Option\n): AfterSignatureAction {\n return {\n type: \"AfterSignature\",\n payload: {\n lfStatus,\n },\n };\n}\n\nexport function followUpAndSignatureAction(\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n isKycNeeded: boolean,\n askForCredentials?: boolean\n): FollowUpAndSignatureAction {\n return {\n type: \"FollowUpAndSignature\",\n payload: {\n restoredPersonalDataOptions: option.none,\n hasRefinancingCredits,\n hasRepaidLoans,\n isKycNeeded,\n askForCredentials,\n },\n };\n}\n\nexport function restoreFollowUpAndSignatureAction(\n restoredPersonalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n isKycNeeded: boolean\n): FollowUpAndSignatureAction {\n return {\n type: \"FollowUpAndSignature\",\n payload: {\n restoredPersonalDataOptions: option.some(restoredPersonalDataOptions),\n hasRefinancingCredits,\n hasRepaidLoans,\n isKycNeeded,\n },\n };\n}\n\ninterface RejectAction {\n type: \"Reject\";\n payload: { rejectionReason: RejectionReason };\n}\n\nexport function rejectAction(rejectionReason: RejectionReason): RejectAction {\n return { type: \"Reject\", payload: { rejectionReason } };\n}\n\nexport interface SummaryAction {\n type: \"Summary\";\n payload: {\n productType: Option;\n hasRefinancing: boolean;\n lfStatus: Option;\n };\n}\n\nexport function summaryAction(\n productType: Option,\n hasRefinancing: boolean,\n lfStatus: Option\n): SummaryAction {\n return {\n type: \"Summary\",\n payload: { productType, hasRefinancing, lfStatus },\n };\n}\n\nexport interface MaxNumberChangesReachedAction {\n type: \"MaxNumberChangesReached\";\n}\n\nexport function maxNumberChangesReachedAction(): MaxNumberChangesReachedAction {\n return {\n type: \"MaxNumberChangesReached\",\n };\n}\n\ninterface UploadDocumentsAction {\n type: \"UploadDocuments\";\n payload: { lfStatus: Option };\n}\n\nexport function uploadDocumentsAction(\n lfStatus: Option\n): UploadDocumentsAction {\n return { type: \"UploadDocuments\", payload: { lfStatus } };\n}\n\ninterface PersonalDataAction {\n type: \"PersonalData\";\n}\n\nexport function personalDataAction(): PersonalDataAction {\n return { type: \"PersonalData\" };\n}\n\ninterface RestoreStepAction {\n type: \"RestoreStep\";\n payload: {\n restoredData: RestoreNewestLoanApplicationOutput;\n isKycNeeded: boolean;\n rework: Rework;\n applicationStatus: Option;\n signatureStatus: SignatureStatus;\n };\n}\n\nexport function restoreStepAction(\n restoredData: RestoreNewestLoanApplicationOutput,\n isKycNeeded: boolean,\n rework: Rework,\n applicationStatus: Option,\n signatureStatus: SignatureStatus\n): RestoreStepAction {\n return {\n type: \"RestoreStep\",\n payload: {\n restoredData,\n isKycNeeded,\n rework,\n applicationStatus,\n signatureStatus,\n },\n };\n}\n\nexport type Action =\n | ReloadAction\n | LandingAction\n | GoBackAction\n | GoToStepAction\n | VerifyPhoneAndEmailAction\n | Select3PAction\n | UploadIDAction\n | CreditChecksAction\n | ExistingClientAction\n | ExistingApplication3PErrorAction\n | RestoreApplicationAction\n | ApplicationLockedAction\n | CustomerOfferAction\n | ExpensesAndAdditionalIncomeAction\n | ExpensesAndAdditionalIncomeReworkAction\n | OfferListAction\n | OfferListReworkAction\n | SaveCustomerOfferSuspenseAction\n | CheckExpensesOffersAction\n | SendAdditionalIncomeAction\n | OfferReviewAction\n | OfferReviewPushAction\n | PackageSelectionAction\n | VirtualCardAction\n | AccountsForRefinancingAction\n | RepaidLoansAction\n | KYCAction\n | MicropaymentAction\n | MicropaymentOverivewAction\n | FollowUpAndSignatureAction\n | RejectAction\n | SummaryAction\n | UploadDocumentsAction\n | RestoreStepAction\n | ReloadSuspenseAction\n | AfterSignatureAction\n | ExistingClientSuspenseAction\n | MaxNumberChangesReachedAction\n | ErrorAction;\n\nexport const emptyRework: Rework = {\n needContractsUpdate: false,\n reworkSteps: option.none,\n oldValues: option.none,\n newValues: option.none,\n reworkAll: false,\n};\n\nexport const emptyParallelFlowParams: ParallelFlowParameters = {\n hasCAFlowInProgress: false,\n hasCFFlowSentToBO: false,\n hasCAFlowSentToBO: false,\n date: option.none,\n existingApplicationId: option.none,\n};\n\nexport function reducer(state: State, action: Action): State {\n if (action.type === \"Error\" && state.type !== \"Error\") {\n return error(action.payload.message);\n }\n\n switch (state.type) {\n case \"Error\":\n return state;\n case \"Loading\":\n switch (action.type) {\n case \"Landing\":\n return landing();\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(action.payload.loanOffer);\n case \"Select3P\":\n return select3P(action.payload.loanOffer);\n case \"RestoreApplication\":\n return restoreApplication(action.payload);\n case \"CreditChecks\":\n return creditChecks(\n action.payload.loanOffer,\n option.none,\n false,\n emptyRework,\n false,\n false,\n option.none\n );\n case \"RestoreStep\":\n return restoreState(\n action.payload.restoredData,\n action.payload.isKycNeeded,\n action.payload.rework,\n action.payload.applicationStatus,\n action.payload.signatureStatus\n );\n case \"ApplicationLocked\":\n return applicationLocked();\n case \"ExistingClientSuspense\":\n return existingClientSuspense(\n action.payload.loanOffer,\n action.payload.isApplicationExisting\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"Landing\":\n switch (action.type) {\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(action.payload.loanOffer);\n case \"Select3P\":\n return select3P(action.payload.loanOffer);\n case \"CreditChecks\":\n return creditChecks(\n action.payload.loanOffer,\n option.none,\n false,\n emptyRework,\n false,\n false,\n option.none\n );\n case \"RestoreApplication\":\n return restoreApplication(action.payload);\n case \"ExistingClientSuspense\":\n return existingClientSuspense(\n action.payload.loanOffer,\n action.payload.isApplicationExisting\n );\n case \"ApplicationLocked\":\n return applicationLocked();\n default:\n return state;\n }\n case \"Select3P\":\n switch (action.type) {\n case \"GoBack\":\n return landing();\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(action.payload.loanOffer);\n case \"CreditChecks\":\n return creditChecks(\n action.payload.loanOffer,\n option.none,\n false,\n emptyRework,\n false,\n false,\n option.none\n );\n default:\n return state;\n }\n case \"PhoneAndEmailVerification\":\n switch (action.type) {\n case \"GoBack\":\n return landing();\n case \"UploadID\":\n return uploadId(action.payload.loanOffer);\n case \"MaxNumberChangesReached\":\n return maxNumberChangesReached();\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(action.payload.loanOffer);\n default:\n return state;\n }\n case \"AddPhoneNumber\":\n switch (action.type) {\n case \"Reload\":\n return loading();\n case \"MaxNumberChangesReached\":\n return maxNumberChangesReached();\n default:\n return state;\n }\n case \"UploadID\":\n switch (action.type) {\n case \"GoBack\":\n return verifyPhoneAndEmail(option.some(state.payload.loanOffer));\n case \"GoToStep\":\n switch (action.step) {\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(option.some(state.payload.loanOffer));\n default:\n return state;\n }\n case \"ExistingClient\":\n return existingClient(action.reason);\n case \"ExistingApplication3PError\":\n return existingApplication3PError();\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.none,\n false,\n emptyRework,\n false,\n false,\n option.none\n );\n case \"RestoreApplication\":\n return restoreApplication(action.payload);\n case \"RestoreStep\":\n return restoreState(\n action.payload.restoredData,\n action.payload.isKycNeeded,\n action.payload.rework,\n action.payload.applicationStatus,\n action.payload.signatureStatus\n );\n case \"ApplicationLocked\":\n return applicationLocked();\n case \"ExistingClientSuspense\":\n return existingClientSuspense(\n action.payload.loanOffer,\n action.payload.isApplicationExisting\n );\n default:\n return state;\n }\n case \"CreditChecks\":\n switch (action.type) {\n case \"GoToStep\":\n switch (action.step) {\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n action.payload.personalDataOptions,\n action.payload.startLoanApplicationConsent,\n option.none,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncomeRework\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n action.payload.personalDataOptions,\n action.payload.hasRefinancingCredits,\n action.payload.hasRepaidLoans,\n action.payload.startLoanApplicationConsent,\n action.payload.cpiAdditionalQuestions,\n action.payload.needsAdditionalIncome,\n action.payload.hasAdditionalIncome,\n state.payload.rework\n );\n case \"OfferList_Rework\":\n return offerList(\n action.payload.offerType,\n state.payload.loanOffer,\n action.payload.restoredPersonalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"ExistingClient\":\n return state;\n case \"ExistingApplication3PError\":\n return state;\n case \"CustomerOffer\":\n switch (action.type) {\n case \"GoBack\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n default:\n return state;\n }\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n action.payload.fromBack\n ? false\n : action.payload.hasRefinancingCredits,\n action.payload.fromBack ? false : action.payload.hasRepaidLoans,\n state.payload.initialConsent,\n option.none,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"RestoreApplication\":\n switch (action.type) {\n case \"CreditChecks\":\n if (!state.payload.isErrorFetchingRestoredData) {\n return creditChecks(\n action.payload.loanOffer,\n option.none,\n false,\n state.payload.rework,\n false,\n false,\n option.none\n );\n }\n return state;\n case \"Landing\":\n return landing();\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(action.payload.loanOffer);\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"RestoreStep\":\n if (!state.payload.isErrorFetchingRestoredData) {\n return restoreState(\n action.payload.restoredData,\n action.payload.isKycNeeded,\n action.payload.rework === emptyRework\n ? state.payload.rework\n : action.payload.rework,\n action.payload.applicationStatus,\n action.payload.signatureStatus\n );\n }\n return state;\n default:\n return state;\n }\n case \"ApplicationLocked\":\n return state;\n case \"ExpensesAndAdditionalIncome\":\n switch (action.type) {\n case \"GoBack\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ReworkPreviousStep\":\n return navigateReworkStep(state, \"prev\");\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"OfferList\":\n return offerList(\n action.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"SaveCustomerOfferSuspense\":\n return saveCustomerOfferSuspense(\n action.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"CheckExpensesOffers\":\n return checkExpensesOffers(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"CheckAdditionalIncomes\":\n switch (action.type) {\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n action.payload.fromBack\n ? action.payload.needsAdditionalIncome\n : state.payload.needsAdditionalIncome,\n action.payload.fromBack\n ? action.payload.hasAdditionalIncome\n : state.payload.hasAdditionalIncome,\n state.payload.rework\n );\n default:\n return state;\n }\n\n case \"OfferList\":\n switch (action.type) {\n case \"GoBack\":\n return checkAdditionalIncomes(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n action.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"SaveCustomerOfferSuspense\":\n switch (action.type) {\n case \"GoBack\": // TODO check if still needed\n return checkAdditionalIncomes(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n action.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"CheckExpensesOffers\":\n switch (action.type) {\n case \"GoBack\":\n return checkAdditionalIncomes(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"SendAdditionalIncome\":\n return sendAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"SendAdditionalIncome\":\n switch (action.type) {\n case \"GoBack\":\n return checkAdditionalIncomes(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n action.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"SaveCustomerOfferSuspense\":\n return saveCustomerOfferSuspense(\n action.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"OfferReview\":\n switch (action.type) {\n case \"GoBack\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"UploadDocuments\":\n return uploadDocuments(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n option.none,\n state.payload.loanOffer,\n state.payload.rework,\n true\n );\n case \"ReworkPreviousStep\":\n return navigateReworkStep(state, \"prev\");\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"PackageSelection\":\n return packageSelection(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"VirtualCard\":\n return virtualCard(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"AccountsForRefinancing\":\n return accountsForRefinancing(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"RepaidLoans\":\n return repaidLoans(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"KYC\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n action.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"UploadDocuments\":\n return uploadDocuments(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.lfStatus,\n state.payload.loanOffer,\n state.payload.rework,\n true\n );\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.isKycNeeded,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n action.payload.askForCredentials === undefined\n ? true\n : action.payload.askForCredentials,\n option.none\n );\n default:\n return state;\n }\n case \"OfferReviewPush\":\n switch (action.type) {\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.isKycNeeded,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n !state.payload.isRemoteSignature,\n option.none\n );\n default:\n return state;\n }\n case \"PackageSelection\":\n switch (action.type) {\n case \"GoBack\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"VirtualCard\":\n return virtualCard(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"VirtualCard\":\n switch (action.type) {\n case \"GoBack\":\n return packageSelection(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"AccountsForRefinancing\":\n return accountsForRefinancing(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true\n );\n case \"RepaidLoans\":\n return repaidLoans(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true\n );\n case \"KYC\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework,\n true\n );\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n false,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"AccountsForRefinancing\":\n switch (action.type) {\n case \"GoBack\":\n return state.payload.showVirtualCard\n ? virtualCard(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n )\n : offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"KYC\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n false,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n false,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n case \"RepaidLoans\":\n return repaidLoans(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n state.payload.showVirtualCard\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"RepaidLoans\":\n switch (action.type) {\n case \"GoBack\": {\n if (state.payload.showVirtualCard) {\n return virtualCard(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n true,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n }\n if (state.payload.hasRefinancingCredits) {\n return accountsForRefinancing(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n true,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n state.payload.showVirtualCard\n );\n }\n\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n true,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n }\n case \"KYC\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n true,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n true,\n false,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n default:\n return state;\n }\n case \"KYC\":\n switch (action.type) {\n case \"GoBack\":\n return pipe(\n state.payload.hasRefinancingCredits || state.payload.hasRepaidLoans,\n boolean.fold(\n () =>\n state.payload.showVirtualCard\n ? virtualCard(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n )\n : offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n ),\n () =>\n state.payload.hasRepaidLoans\n ? repaidLoans(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n state.payload.showVirtualCard\n )\n : accountsForRefinancing(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n state.payload.showVirtualCard\n )\n )\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.isKycNeeded,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n case \"Micropayment\":\n return micropayment(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"Micropayment\":\n switch (action.type) {\n case \"GoBack\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"CreditChecks\":\n return creditChecks(\n state.payload.loanOffer,\n option.some(state.payload.initialConsent),\n true,\n state.payload.rework,\n false,\n false,\n option.none\n );\n case \"CustomerOffer\":\n return customerOffer(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"ExpensesAndAdditionalIncome\":\n return expensesAndAdditionalIncome(\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n option.none,\n option.none,\n state.payload.rework\n );\n case \"OfferList\":\n return offerList(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"OfferReview\":\n return offerReview(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n );\n case \"KYC\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"Summary\":\n return summary(\n action.payload.productType,\n action.payload.hasRefinancing,\n action.payload.lfStatus\n );\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true, // Comes from micropayment which is called only by KYC\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n default:\n return state;\n }\n case \"FollowUpAndSignature\":\n switch (action.type) {\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"Summary\":\n return summary(\n action.payload.productType,\n action.payload.hasRefinancing,\n action.payload.lfStatus\n );\n case \"GoBack\":\n return kyc(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"UploadDocuments\":\n return uploadDocuments(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.lfStatus,\n state.payload.loanOffer,\n state.payload.rework\n );\n case \"ReloadSuspense\":\n return reloadSuspense(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n case \"AfterSignature\":\n return afterSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none,\n action.payload.lfStatus\n );\n\n default:\n return state;\n }\n case \"Rejected\":\n return state;\n case \"MicropaymentOverview\":\n return state;\n case \"Summary\":\n switch (action.type) {\n case \"MicropaymentOverview\":\n return micropaymentOverview();\n default:\n return state;\n }\n case \"MaxNumberChangesReached\":\n return maxNumberChangesReached();\n case \"UploadDocuments\":\n switch (action.type) {\n case \"Summary\":\n return summary(\n state.payload.productType,\n state.payload.hasRefinancing,\n state.payload.lfStatus\n );\n case \"GoToStep\":\n switch (action.step) {\n case \"ReworkPreviousStep\":\n return navigateReworkStep(state, \"prev\");\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"PersonalData\":\n switch (action.type) {\n case \"GoBack\":\n return state;\n case \"GoToStep\":\n switch (action.step) {\n case \"ReworkNextStep\":\n return navigateReworkStep(state, \"next\");\n default:\n return state;\n }\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n default:\n return state;\n }\n case \"ReloadSuspense\":\n switch (action.type) {\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true, // Comes from micropayment which is called only by KYC\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n true,\n option.none\n );\n default:\n return state;\n }\n case \"AfterSignature\":\n switch (action.type) {\n case \"FollowUpAndSignature\":\n return followUpAndSignature(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.isKycNeeded,\n state.payload.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework,\n action.payload.askForCredentials === undefined\n ? state.payload.shouldAskCredential\n : action.payload.askForCredentials,\n option.none\n );\n case \"UploadDocuments\":\n return uploadDocuments(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n action.payload.lfStatus,\n state.payload.loanOffer,\n state.payload.rework\n );\n case \"Summary\":\n return summary(\n action.payload.productType,\n action.payload.hasRefinancing,\n action.payload.lfStatus\n );\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"ReloadSuspense\":\n return reloadSuspense(\n state.payload.offerType,\n state.payload.loanOffer,\n state.payload.selectedOffer,\n state.payload.personalDataOptions,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.cpiAdditionalQuestions,\n state.payload.initialConsent,\n option.none,\n state.payload.rework\n );\n default:\n return state;\n }\n case \"ExistingClientSuspense\":\n switch (action.type) {\n case \"ExistingClient\":\n return existingClient(action.reason);\n case \"ExistingApplication3PError\":\n return existingApplication3PError();\n case \"CreditChecks\":\n if (option.isSome(state.payload.loanOffer)) {\n return creditChecks(\n state.payload.loanOffer.value,\n option.none,\n false,\n emptyRework,\n false,\n false,\n option.none\n );\n }\n return state;\n case \"RestoreApplication\":\n return restoreApplication(action.payload);\n case \"Reject\":\n return rejected(action.payload.rejectionReason);\n case \"VerifyPhoneAndEmail\":\n return verifyPhoneAndEmail(state.payload.loanOffer);\n case \"Landing\":\n return landing();\n case \"RestoreStep\":\n return restoreState(\n action.payload.restoredData,\n action.payload.isKycNeeded,\n action.payload.rework,\n action.payload.applicationStatus,\n action.payload.signatureStatus\n );\n case \"ApplicationLocked\":\n return applicationLocked();\n default:\n return state;\n }\n }\n}\n\nexport function shouldShowFormsOnExit(\n state: State,\n isCreditChecksConfirmed: boolean\n): boolean {\n switch (state.type) {\n case \"Loading\":\n case \"CustomerOffer\":\n case \"ExpensesAndAdditionalIncome\":\n case \"CheckAdditionalIncomes\":\n case \"OfferList\":\n case \"CheckExpensesOffers\":\n case \"SendAdditionalIncome\":\n case \"OfferReview\":\n case \"OfferReviewPush\":\n case \"PackageSelection\":\n case \"VirtualCard\":\n case \"AccountsForRefinancing\":\n case \"KYC\":\n case \"FollowUpAndSignature\":\n case \"UploadDocuments\":\n case \"PersonalData\":\n case \"AfterSignature\":\n case \"Micropayment\":\n case \"ReloadSuspense\":\n case \"ExistingClientSuspense\":\n case \"SaveCustomerOfferSuspense\":\n case \"RepaidLoans\":\n return true;\n case \"Landing\":\n case \"PhoneAndEmailVerification\":\n case \"Select3P\":\n case \"AddPhoneNumber\":\n case \"UploadID\":\n case \"ExistingClient\":\n case \"ExistingApplication3PError\":\n case \"RestoreApplication\":\n case \"Rejected\":\n case \"MicropaymentOverview\":\n case \"Summary\":\n case \"MaxNumberChangesReached\":\n case \"ApplicationLocked\":\n case \"Error\":\n return false;\n case \"CreditChecks\":\n return isCreditChecksConfirmed;\n }\n}\n\nexport function reasonNotSavedOnExit(state: State): LocaleKey | undefined {\n switch (state.type) {\n case \"Landing\":\n case \"PhoneAndEmailVerification\":\n case \"UploadID\":\n case \"CreditChecks\":\n return \"StandardLoan.ApplicationNotSaved.reason.exitTooEarly\";\n case \"ExistingClient\":\n case \"ExistingApplication3PError\":\n case \"RestoreApplication\":\n case \"Rejected\":\n case \"MicropaymentOverview\":\n case \"Summary\":\n case \"MaxNumberChangesReached\":\n default:\n return undefined;\n }\n}\n\nexport function handleRejectableSteps(\n restoredData: RejectableSteps,\n nextState: (offerType: OfferType) => State\n): State {\n return pipe(\n restoredData.proceedNextResponse,\n option.getOrElse(() => ({ lfDecision: \"Approved\" })),\n option.fromPredicate(decision => decision.lfDecision !== \"Rejected\"),\n option.map(\n decision => decision.lfDecision as Exclude\n ),\n option.fold(constant(rejected(\"CBRejected\")), nextState)\n );\n}\n\nexport function restoreState(\n restoredData: RestoreNewestLoanApplicationOutput,\n isKycNeeded: boolean,\n rework: Rework,\n applicationStatus: Option,\n signatureStatus: SignatureStatus\n): State {\n const loanOffer = {\n amount: restoredData.genericLoanResponse.amount,\n tenor: restoredData.genericLoanResponse.tenor,\n currency: restoredData.genericLoanResponse.currency,\n };\n\n switch (restoredData.festep) {\n case \"CREDIT_CHECKS\":\n return creditChecks(\n loanOffer,\n option.none,\n true,\n rework,\n false,\n false,\n option.none\n );\n case \"REVIEW_INFORMATION\":\n return creditChecks(\n loanOffer,\n option.some(restoredData.startStandardLoanApplicationRequest),\n true,\n rework,\n false,\n false,\n option.none\n );\n case \"FINALISE_OFFER_MAIN_SCREEN\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n customerOffer(\n loanOffer,\n personalDataOptions.personalData,\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n );\n\n case \"EXPENSE\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n expensesAndAdditionalIncome(\n loanOffer,\n personalDataOptions.personalData,\n getHasRefinancingCredits(restoredData.creditBureauStatusResponse),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n option.none,\n option.none,\n rework\n )\n )\n );\n\n case \"ADDITIONAL_INCOME\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n expensesAndAdditionalIncome(\n loanOffer,\n personalDataOptions.personalData,\n getHasRefinancingCredits(restoredData.creditBureauStatusResponse),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n option.some(true),\n option.some(true),\n rework\n )\n )\n );\n\n case \"CHOOSE_OFFER\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n offerList(\n offerType,\n loanOffer,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"REVIEW_OFFER\":\n // @TODO: where to get the approved/counteroffer offerType?\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n offerReview(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n\n case \"AUTHORIZE_PUSH\":\n // @TODO: where to get the approved/counteroffer offerType?\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n offerReviewPush(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.genericLoanResponse.disbursementAccount,\n false\n )\n )\n )\n );\n case \"REMOTE_SIGNATURE\":\n // @TODO: where to get the approved/counteroffer offerType?\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n offerReviewPush(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.genericLoanResponse.disbursementAccount,\n true\n )\n )\n )\n );\n case \"KYC\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n kyc(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.additionalQuestionsCPIRequest,\n restoredData.startStandardLoanApplicationRequest,\n option.none,\n rework\n )\n )\n )\n );\n case \"PERSONAL_DATA\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n kyc(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n false,\n restoredData.additionalQuestionsCPIRequest,\n restoredData.startStandardLoanApplicationRequest,\n pipe(\n restoredData.standardLoanKycRequest,\n option.map(kycReq => kycReq.answers.transactionsInfo)\n ),\n rework\n )\n )\n )\n );\n case \"MICROPAYMENT\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n micropayment(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"PACKAGE_SELECTION\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n packageSelection(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"VIRTUAL_CARDS\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n virtualCard(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"ACCOUNTS_FOR_REFINANCING\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n accountsForRefinancing(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"REPAID_LOANS\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n repaidLoans(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"CLIENT_CREDENTIALS\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n handleRejectableSteps(restoredData, offerType =>\n followUpAndSignature(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n isKycNeeded,\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.festep === \"CLIENT_CREDENTIALS\",\n option.some(restoredData)\n )\n )\n )\n );\n case \"SIGNATURE\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing() as State,\n personalDataOptions =>\n pipe(\n signatureStatus === \"NONE\",\n boolean.fold(\n () =>\n handleRejectableSteps(restoredData, offerType =>\n afterSignature(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(\n restoredData.creditBureauStatusResponse\n ),\n isKycNeeded,\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.festep === \"CLIENT_CREDENTIALS\",\n option.some(restoredData),\n option.of(\"Approved\")\n )\n ),\n () =>\n handleRejectableSteps(restoredData, offerType =>\n followUpAndSignature(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(\n restoredData.creditBureauStatusResponse\n ),\n isKycNeeded,\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.festep === \"CLIENT_CREDENTIALS\",\n option.some(restoredData)\n )\n )\n )\n )\n )\n );\n case \"UPLOAD_DOCUMENTS\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing(),\n (): State =>\n handleRejectableSteps(restoredData, _ =>\n uploadDocuments(\n restoredData.genericLoanResponse.productType,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n option.none,\n loanOffer,\n rework\n )\n )\n )\n );\n case \"FINAL_PAGE\":\n return summary(\n restoredData.genericLoanResponse.productType,\n getHasRefinancingCredits(restoredData.creditBureauStatusResponse),\n // option.none // TODO Simone: Is it ok?\n pipe(\n applicationStatus,\n option.fold(() => option.none, toLfStatus)\n )\n );\n case \"UNDER_REWORK\":\n return pipe(\n rework.reworkSteps,\n option.fold(\n () => landing(), // @TODO: KO page? Shouldn't happen\n steps => reworkStep(rework, loanOffer, steps[0])\n )\n );\n }\n}\n\nfunction toLfStatus(applicationStatus: ApplicationStatus): Option {\n switch (applicationStatus) {\n case \"APPROVED\":\n return option.some(\"Approved\" as LFStatus);\n case \"REJECTED\":\n return option.some(\"Rejected\" as LFStatus);\n default:\n return option.none;\n }\n}\n\nfunction getHasRefinancingCredits(\n creditBurauResponse: CreditBureauStatus\n): boolean {\n if (\n creditBurauResponse.cbResultReady &&\n creditBurauResponse.cbDecision === \"Approved\"\n )\n return creditBurauResponse.hasRefinancingCredits;\n\n return false;\n}\n\nfunction getHasRepaidLoans(creditBurauResponse: CreditBureauStatus): boolean {\n if (\n creditBurauResponse.cbResultReady &&\n creditBurauResponse.cbDecision === \"Approved\"\n )\n return pipe(\n creditBurauResponse.hasRepaidLoans,\n option.getOrElse(constFalse)\n );\n\n return false;\n}\n\nfunction navigateReworkStep(\n state:\n | PersonalDataState\n | UploadDocumentsState\n | FollowUpAndSignatureState\n | AccountsForRefinancingState\n | RepaidLoansState\n | ExpensesAndAdditionalIncomeState\n | OfferReviewState\n | CreditChecksState,\n direction: \"prev\" | \"next\"\n) {\n const stateToReworkStepName = (): ReworkStep => {\n switch (state.type) {\n case \"AccountsForRefinancing\":\n return \"ACCOUNTS_FOR_REFINANCING\";\n case \"RepaidLoans\":\n return \"REPAID_LOANS\";\n case \"UploadDocuments\":\n return \"UPLOAD_DOCUMENTS\";\n case \"FollowUpAndSignature\":\n return \"AUTHORIZATION_PAGE\";\n case \"PersonalData\":\n return \"PERSONAL_DATA\";\n case \"ExpensesAndAdditionalIncome\":\n return reworkStepsContainStep(\n state.payload.rework.reworkSteps,\n \"ADDITIONAL_INCOME\"\n )\n ? \"ADDITIONAL_INCOME\"\n : \"INCOME_AND_PERSONAL_DATA\";\n case \"CreditChecks\":\n return \"INCOME_AND_PERSONAL_DATA\";\n case \"OfferReview\":\n return reworkStepsContainStep(\n state.payload.rework.reworkSteps,\n \"ADDITIONAL_INCOME\"\n )\n ? \"ADDITIONAL_INCOME\"\n : \"INCOME_AND_PERSONAL_DATA\";\n }\n };\n return pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () => state,\n reworkSteps => {\n const index =\n reworkSteps.findIndex(step => step === stateToReworkStepName()) +\n (direction === \"next\" ? 1 : -1);\n\n if (index >= 0 && index < reworkSteps.length) {\n return reworkStep(\n state.payload.rework,\n state.payload.loanOffer,\n reworkSteps[index]\n );\n } else return state;\n }\n )\n );\n}\n\nfunction reworkStepsContainStep(\n reworkSteps: Option>,\n step: ReworkStep\n) {\n return pipe(\n reworkSteps,\n option.fold(\n () => false,\n reworkSteps =>\n reworkSteps.findIndex(reworkStep => reworkStep === step) > -1\n )\n );\n}\n\nfunction reworkStep(\n rework: Rework,\n loanOffer: LoanOffer,\n stepToRestore: ReworkStep\n) {\n return pipe(\n rework.newValues,\n option.fold(\n () => landing(),\n (restoredData): State => {\n switch (stepToRestore) {\n case \"ACCOUNTS_FOR_REFINANCING\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing(),\n (personalDataOptions): State =>\n handleRejectableSteps(restoredData, offerType =>\n accountsForRefinancing(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(\n restoredData.creditBureauStatusResponse\n ),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"REPAID_LOANS\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing(),\n (personalDataOptions): State =>\n handleRejectableSteps(restoredData, offerType =>\n repaidLoans(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\n )\n )\n );\n case \"ADDITIONAL_INCOME\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing(),\n (personalDataOptions): State =>\n expensesAndAdditionalIncome(\n loanOffer,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n option.some(true),\n option.some(true),\n rework\n )\n )\n );\n\n case \"INCOME_AND_PERSONAL_DATA\":\n return creditChecks(\n loanOffer,\n option.some(restoredData.startStandardLoanApplicationRequest),\n false,\n rework,\n getHasRefinancingCredits(restoredData.creditBureauStatusResponse),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n restoredData.additionalQuestionsCPIRequest\n );\n\n case \"UPLOAD_DOCUMENTS\":\n return uploadDocuments(\n restoredData.genericLoanResponse.productType,\n getHasRefinancingCredits(restoredData.creditBureauStatusResponse),\n getHasRepaidLoans(restoredData.creditBureauStatusResponse),\n option.none,\n loanOffer,\n rework\n );\n\n case \"PERSONAL_DATA\":\n return personalData(\n loanOffer,\n pipe(\n restoredData.personalDataConfirmation,\n option.chain(pd => {\n const { primary, secondary } = pd;\n const documentPayload = mergeExtractDataDocumentsOutput(\n primary,\n secondary\n );\n\n return pipe(\n documentPayload,\n option.map(document => ({\n ...document,\n canUploadAgain: false,\n canEdit: false,\n showWarning: false,\n fraudCheck: option.none,\n }))\n );\n })\n ),\n rework\n );\n\n case \"AUTHORIZATION_PAGE\":\n return pipe(\n restoredData.incomeAndPersonalData.personalData,\n option.fold(\n () => landing(),\n (personalDataOptions): State =>\n handleRejectableSteps(restoredData, offerType =>\n followUpAndSignature(\n offerType,\n loanOffer,\n restoredData.genericLoanResponse,\n personalDataOptions.personalData,\n getHasRefinancingCredits(\n restoredData.creditBureauStatusResponse\n ),\n getHasRepaidLoans(\n restoredData.creditBureauStatusResponse\n ),\n false,\n restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n false,\n option.some(restoredData)\n )\n )\n )\n );\n }\n }\n )\n );\n}\n","import { useAppContext } from \"../useAppContext\";\nimport { StandardLoanFlowType } from \"./domain\";\n\nexport const useFlowTypeCases = (flowType: StandardLoanFlowType) => {\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const isPWSRemote = flowType === \"PWSRemote\";\n const isTLS = flowType === \"TLSAgent\";\n const isInPerson = flowType === \"InPerson\";\n const is3P = flowType === \"3P\";\n const isTLSorPWSRemoteAndCZ = tenant === \"CZ\" && (isPWSRemote || isTLS);\n const isTLSorPWSRemoteAndSK = tenant === \"SK\" && (isPWSRemote || isTLS);\n\n return {\n isPWSRemote,\n isTLS,\n is3P,\n isInPerson,\n isTLSorPWSRemoteAndCZ,\n isTLSorPWSRemoteAndSK,\n };\n};\n","import { apiCall } from \"../../APICall\";\nimport * as t from \"io-ts\";\nimport { eq } from \"fp-ts\";\nimport { constFalse } from \"fp-ts/function\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\n\nexport const confirmUpload = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"confirmUpload\"],\n});\n\nconst CheckDisplaySmsLinkOptionOutput = t.type({\n displaySmsLinkOption: t.boolean,\n});\n\nconst CheckDisplaySmsLinkOptionInput = t.type({\n documentTypeId: NonEmptyString,\n});\n\nexport const checkDisplaySmsLinkOption = apiCall({\n inputEq: eq.getStructEq({\n documentTypeId: eq.eqString,\n }),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"document\",\n \"checkDisplaySmsLinkOption\",\n ],\n inputCodec: CheckDisplaySmsLinkOptionInput,\n outputCodec: CheckDisplaySmsLinkOptionOutput,\n});\n","import {\n AlertDialog,\n Body,\n Box,\n Button,\n convertToBlob,\n downloadFile,\n InlineMessage,\n LocalizedString,\n Space,\n Stack,\n unsafeLocalizedString,\n UploadIcon,\n useDeviceUA,\n useIsMobileLayout,\n} from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport { useState } from \"react\";\nimport { palette } from \"design-system/lib/styleConstants\";\nimport { useFormatMessage } from \"../../intl\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport * as api from \"../api\";\nimport { DocumentViewDialog } from \"../../Common/Dialogs/DocumentViewDialog/DocumentViewDialog\";\nimport { getDocumentContentSL, DocumentMime } from \"../../Common/documentAPI\";\nimport { getOnlyDownloadMimes } from \"../../Common/documentDomain\";\nimport { useCommand } from \"../../useAPI\";\nimport { foldRequiredDocumentStatus } from \"../domain\";\nimport moment from \"moment\";\nimport { messageTimeFormat } from \"../../MortgageDashboard/Communication/util\";\nimport * as classes from \"./UploadDocumentItem.treat\";\n\ntype Props = {\n document: api.UploadedDocumentData;\n showMandatoryError: boolean;\n onSelectItem: () => void;\n onRemoveItem: (docId: NonEmptyString) => void;\n};\n\nfunction DownloadItem(props: {\n documentId: NonEmptyString;\n documentName: LocalizedString;\n documentMime: Option;\n onRemoveItem: (docId: NonEmptyString) => void;\n uploadedDate: Option;\n}) {\n const isMobileLayout = useIsMobileLayout();\n const formatMessage = useFormatMessage();\n const [isDownloadDialogOpen, setDownloadDialogOpen] = useState(\n false\n );\n const [isRemoveDialogOpen, setRemoveDialogOpen] = useState(false);\n const documentContent = useCommand(getDocumentContentSL);\n const { isSafari } = useDeviceUA();\n\n const download = pipe(\n {\n documentID: props.documentId,\n },\n documentContent,\n taskEither.map(docContent => {\n const url = convertToBlob(docContent.content, docContent.mimeType);\n\n downloadFile(url, docContent.filename);\n })\n );\n\n const onDocumentNameClick = () =>\n pipe(\n props.documentMime,\n option.fold(\n constVoid, // should never happen, because this component is rendered when docId is not null. When docId is not null, mimeType should never be null\n documentMime => {\n // temporary fix, until preview of onlyDownloadMimes types is implemented\n if (getOnlyDownloadMimes(isSafari).includes(documentMime)) {\n return download();\n }\n return setDownloadDialogOpen(true);\n }\n )\n );\n\n return (\n <>\n \n \n \"\" as LocalizedString,\n date =>\n unsafeLocalizedString(\n \" | \" + moment(date).format(messageTimeFormat)\n )\n )\n )\n )}\n action={onDocumentNameClick}\n />\n \n {!isMobileLayout && }\n \n setRemoveDialogOpen(true)}\n />\n \n \n {isDownloadDialogOpen && (\n setDownloadDialogOpen(false)}\n productType=\"SL\"\n />\n )}\n {isRemoveDialogOpen && (\n {\n setRemoveDialogOpen(false);\n }}\n onCancel={() => {\n setRemoveDialogOpen(false);\n }}\n onConfirm={() => {\n setRemoveDialogOpen(false);\n props.onRemoveItem(props.documentId);\n }}\n cancelLabel={formatMessage(\"Cancel\")}\n confirmLabel={formatMessage(\n \"StandardLoan.UploadDocuments.remove.confirm\"\n )}\n />\n )}\n \n );\n}\n\nfunction UploadItem(props: {\n document: api.UploadedDocumentData;\n onSelectItem: () => void;\n}) {\n const isMobileLayout = useIsMobileLayout();\n const formatMessage = useFormatMessage();\n\n const uploadButton = (\n \n );\n const uploading = (\n \n {formatMessage(\"Uploading\")}\n \n );\n\n return (\n \n \n \n {unsafeLocalizedString(\n props.document.documentName +\n pipe(\n props.document.uploadedTimestamp,\n option.fold(\n () => \"\" as LocalizedString,\n date =>\n unsafeLocalizedString(\n \" | \" + moment(date).format(messageTimeFormat)\n )\n )\n )\n )}\n \n \n\n {!isMobileLayout && }\n \n {pipe(\n props.document.requiredDocumentStatus,\n foldRequiredDocumentStatus({\n whenNew: () => uploadButton,\n whenUploaded: () => uploadButton,\n whenUploadedByClient: () => uploadButton,\n whenUploading: () => uploading,\n whenUploadingByClient: () => uploading,\n whenSealing: () => uploading,\n })\n )}\n \n \n );\n}\n\nexport function UploadDocumentItem(props: Props) {\n const formatMessage = useFormatMessage();\n return pipe(\n props.document.docId,\n option.fold(\n () => (\n <>\n \n {props.showMandatoryError && (\n \n )}\n \n ),\n id => (\n \n )\n )\n );\n}\n","import { Box, Space, unsafeLocalizedString } from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport * as classes from \"../../MortgageDashboard/Documents/Section.treat\";\n\ntype Props = {\n note: string;\n};\n\nexport function DocumentNote(props: Props) {\n const formatMessage = useFormatMessage();\n return (\n \n \n {formatMessage(\"Mortgage.Documents.accordion.notePrefix\")}\n \n \n \n {unsafeLocalizedString(props.note)}\n \n \n );\n}\n","import { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport {\n DocumentUploadDialog,\n DocumentUploadDialogProps,\n} from \"../../Common/Dialogs/DocumentUploadDialog/DocumentUploadDialog\";\nimport { UploadDocumentFlowType } from \"../../globalDomain\";\n\ntype Props = {\n applicationElementID: Option;\n productType: Option;\n} & Omit;\n\nexport const OptionalDocumentUploadDialog = (props: Props) => {\n return ;\n};\n","import { AppProvider } from \"./AppProvider\";\nimport { AuthenticationContextProvider } from \"./AuthenticationContext\";\nimport { ThirdPartyAuth } from \"./3PLogin/ThirdPartyAuth\";\nimport { EnvBadge } from \"./Common/EnvBadge/EnvBadge\";\nimport { AuthenticationInfo } from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\n\ntype Props = {\n authInfo: Option;\n showPasswordWasResetMessage: boolean;\n children: (passwordWasChanged: boolean) => JSX.Element;\n};\n\nexport function ThirdPartyAppProvider(props: Props) {\n return (\n \n \n props.children(passwordWasChanged)}\n />\n \n \n \n );\n}\n","import { LocalizedString, NonNegativeInteger } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n ExistingClientAuthenticationMethod,\n MoneyAmount,\n optionFromUndefined,\n} from \"../globalDomain\";\nimport { LocaleKey } from \"../intl\";\nimport { LoanItem, LoanType, UploadedDocumentData } from \"./api\";\nimport * as t from \"io-ts\";\nimport { IncomeOutput } from \"./IncomeForm/domain\";\nimport { LiabilitiesVariant } from \"../MortgageDashboard/Registers/CBResults/Liabilities\";\nimport * as loanApi from \"./api\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\n\nexport type AdditionalIncomeInfo = {\n hasAdditionalIncome: Option;\n additionaIncomes: Option;\n};\n\nexport type SelectedCompany = {\n companyName: string;\n companyIco: string;\n};\n\nexport const StandardLoanFlowType = t.keyof(\n {\n InPerson: true,\n \"3P\": true,\n TLSAgent: true,\n HomeBanking: true,\n SmartBanking: true,\n PWSRemote: true,\n },\n \"StandardLoanFlowType\"\n);\nexport type StandardLoanFlowType = t.TypeOf;\n\nexport function foldFlowType(matches: {\n whenHomeBanking: IO;\n whenSmartBanking: IO;\n when3P: IO;\n whenInPerson: IO;\n whenTLSAgent: IO;\n whenPWSRemote: IO;\n}): Reader {\n return flowType => {\n switch (flowType) {\n case \"HomeBanking\":\n return matches.whenHomeBanking();\n case \"SmartBanking\":\n return matches.whenSmartBanking();\n case \"3P\":\n return matches.when3P();\n case \"InPerson\":\n return matches.whenInPerson();\n case \"TLSAgent\":\n return matches.whenTLSAgent();\n case \"PWSRemote\":\n return matches.whenPWSRemote();\n }\n };\n}\n\nexport function shouldAskCompany(sourceOfIncome: Option): boolean {\n return pipe(\n sourceOfIncome,\n option.exists(item => item === \"Employed\" || item === \"SelfEmployed\")\n );\n}\n\nexport function getTypeOfProductLabel(product: LoanType): LocaleKey {\n switch (product) {\n case \"CREDIT_CARD\":\n return \"StandardLoan.AccountsForRefinancing.Products.creditCardLabel\";\n case \"LOAN\":\n return \"StandardLoan.AccountsForRefinancing.Products.loanLabel\";\n case \"OVERDRAFT\":\n return \"StandardLoan.AccountsForRefinancing.Products.overdraftLabel\";\n }\n}\n\nexport type RepaidLiabilityFormModel = {\n type: LoanType;\n creditorName: string;\n originalAmount: MoneyAmount;\n recordId: NonEmptyString;\n};\n\nexport type ExternalLiabilityFormModel = LoanItem & {\n creditorName: string;\n accountForDisbursment: string;\n variableSymbol: string;\n creditCardNumber: string;\n selectedForRepaid: Option;\n};\n\nexport type LiabilityFormModel = LoanItem & {\n selected: boolean;\n selectedForRepaid: boolean;\n startDate: Option;\n};\n\nexport type RestoredRecapData = {\n loanAmount: MoneyAmount;\n instalment: MoneyAmount;\n tenor: NonNegativeInteger;\n interestRate: number;\n feStep: LocalizedString;\n};\n\nexport type RefuseExistingClientReason =\n | \"HasUserId\"\n | \"IsMultipleUser\"\n | \"IsExisting\"\n | \"IsPersonalNumberMatch\";\n\nexport function foldLiabilitiesVariant(\n variant: LiabilitiesVariant,\n match: {\n onMtg: () => T;\n onCf: () => T;\n onOvd: () => T;\n }\n): T {\n switch (variant) {\n case \"MTG\":\n return match.onMtg();\n case \"CF\":\n return match.onCf();\n case \"OVD\":\n return match.onOvd();\n }\n}\n\nexport const UnderAgeError = t.type({\n id: t.literal(\"UnderAgeError\"),\n});\nexport type UnderAgeError = t.TypeOf;\n\nexport function foldRequiredDocumentStatus(matches: {\n whenNew: IO;\n whenUploaded: IO;\n whenUploadedByClient: IO;\n whenUploading: IO;\n whenUploadingByClient: IO;\n whenSealing: IO;\n}): Reader {\n return flowType => {\n switch (flowType) {\n case \"NEW\":\n return matches.whenNew();\n case \"UPLOADED\":\n return matches.whenUploaded();\n case \"UPLOADED_BY_CLIENT\":\n return matches.whenUploadedByClient();\n case \"UPLOADING\":\n return matches.whenUploading();\n case \"UPLOADING_BY_CLIENT\":\n return matches.whenUploadingByClient();\n case \"SEALING\":\n return matches.whenSealing();\n }\n };\n}\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 function mapSignatureToExistingClientAuthMethod(\n signatureType: loanApi.SignatureType,\n flowType: StandardLoanFlowType,\n defaultAuthenticationMethod: Option\n): Option {\n if (flowType === \"TLSAgent\") {\n return defaultAuthenticationMethod;\n }\n if (flowType === \"SmartBanking\") {\n return option.some(\"PIN\");\n }\n switch (signatureType) {\n case \"OtpSms\":\n return option.some(\"ID\");\n case \"Click2Sign\":\n return option.some(\"PUSH_NOTIFICATION\");\n }\n}\n","import { Heading, LocalizedString, Stack } from \"design-system\";\nimport * as api from \"../api\";\nimport { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { UploadDocumentsSubsection } from \"./UploadDocumentsSubsection\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\n\ntype Props = {\n section: api.UploadedDocumentData[];\n sectionName: api.SectionType;\n showMandatoryError: boolean;\n onSelectDocument: (document: api.UploadedDocumentData) => void;\n onRemoveDocument: (docId: NonEmptyString) => void;\n};\n\nexport function UploadDocumentsSection(props: Props) {\n const formatMessage = useFormatMessage();\n\n const subSections = extractSubSectionsFromSection(props.section);\n\n return (\n \n \n {formatMessage(getSectionLabel(props.sectionName))}\n \n \n {subSections.map(subSection => (\n document.subSection === subSection\n )}\n subSectionName={subSection}\n showMandatoryError={props.showMandatoryError}\n onSelectDocument={props.onSelectDocument}\n onRemoveDocument={props.onRemoveDocument}\n />\n ))}\n \n \n );\n}\n\nfunction getSectionLabel(section: api.SectionType): LocaleKey {\n switch (section) {\n case \"MainIncome\":\n return \"StandardLoan.UploadDocuments.MainIncome.title\";\n case \"AdditionalIncome\":\n return \"StandardLoan.UploadDocuments.AdditionalIncome.title\";\n case \"Refinancing\":\n return \"StandardLoan.UploadDocuments.Refinancing.title\";\n case \"OptionalDocuments\":\n return \"StandardLoan.UploadDocuments.OptionalDocuments.title\";\n case \"NewRequiredDocuments\":\n return \"StandardLoan.UploadDocuments.NewRequiredDocuments.title\";\n }\n}\n\nfunction extractSubSectionsFromSection(\n section: api.UploadedDocumentData[]\n): LocalizedString[] {\n const found: LocalizedString[] = [];\n\n section.forEach(\n document =>\n !found.includes(document.subSection) && found.push(document.subSection)\n );\n\n return found;\n}\n","import { constNull, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport * as remoteData from \"../../RemoteData\";\nimport { useQuery } from \"../../useAPI\";\nimport {\n DocumentUploadDialog,\n DocumentUploadDialogProps,\n} from \"../../Common/Dialogs/DocumentUploadDialog/DocumentUploadDialog\";\nimport * as api from \"./api\";\nimport { UploadDocumentFlowType } from \"../../globalDomain\";\n\ntype Props = {\n docTypeId: NonEmptyString;\n applicationElementID: Option;\n productType: Option;\n} & Omit;\n\nexport const StandardLoanDocumentUploadDialog = (props: Props) => {\n const [checkDisplaySmsLinkOption] = useQuery(api.checkDisplaySmsLinkOption, {\n documentTypeId: props.docTypeId,\n });\n\n return pipe(\n checkDisplaySmsLinkOption,\n remoteData.fold(constNull, constNull, ({ displaySmsLinkOption }) => (\n \n ))\n );\n};\n","import { Box, Button, Heading, PlusIcon, Stack } from \"design-system\";\nimport * as api from \"../api\";\nimport { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { UploadDocumentItem } from \"./UploadDocumentItem\";\nimport { DocumentNote } from \"./DocumentNote\";\nimport { option } from \"fp-ts\";\n\ntype Props = {\n section: api.UploadedDocumentData[];\n sectionName: api.SectionType;\n showMandatoryError: boolean;\n onSelectDocument: (document: api.UploadedDocumentData) => void;\n onRemoveDocument: (docId: NonEmptyString) => void;\n onAddNewOptionalDocument: () => void;\n};\n\nexport function OptionalDocumentsSection(props: Props) {\n const formatMessage = useFormatMessage();\n\n const renderAddOptionalDocument = (\n \n \n \n );\n\n const renderDocumentItemAndNote = (document: api.UploadedDocumentData) => {\n return (\n <>\n props.onSelectDocument(document)}\n onRemoveItem={props.onRemoveDocument}\n />\n {option.isSome(document.uploadNote) &&\n document.uploadNote.value.length > 0 && (\n \n )}\n \n );\n };\n\n return (\n \n \n {formatMessage(getSectionLabel(props.sectionName))}\n \n \n {props.section.map(document => renderDocumentItemAndNote(document))}\n {\n props.section.length < 5 && renderAddOptionalDocument // TODO Take the limit from BFF, with /requiredDocuments response, in R6\n }\n \n \n );\n}\n\nfunction getSectionLabel(section: api.SectionType): LocaleKey {\n switch (section) {\n case \"MainIncome\":\n return \"StandardLoan.UploadDocuments.MainIncome.title\";\n case \"AdditionalIncome\":\n return \"StandardLoan.UploadDocuments.AdditionalIncome.title\";\n case \"Refinancing\":\n return \"StandardLoan.UploadDocuments.Refinancing.title\";\n case \"OptionalDocuments\":\n return \"StandardLoan.UploadDocuments.OptionalDocuments.title\";\n case \"NewRequiredDocuments\":\n return \"StandardLoan.UploadDocuments.NewRequiredDocuments.title\";\n }\n}\n","import {\n boolean,\n nonEmptyArray,\n option,\n readerTaskEither,\n taskEither,\n} from \"fp-ts\";\nimport {\n constFalse,\n constNull,\n constTrue,\n constVoid,\n flow,\n pipe,\n} from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n Box,\n ErrorBanner,\n FeedbackBlock,\n Loader,\n LocalizedString,\n useAuthenticationContext,\n} from \"design-system\";\nimport { LocaleKey, useFormatMessage } from \"../intl\";\nimport { useCommand } from \"../useAPI\";\nimport { MainLayout } from \"../Common/MainLayout/MainLayout\";\nimport * as headerActionIcon from \"../Common/MainContent/headerActionIcon\";\n\nimport { PhoneAndEmailVerification } from \"./PhoneAndEmailVerification/PhoneAndEmailVerification\";\nimport { PortalStatusAlert } from \"../Common/PortalStatusAlert/PortalStatusAlert\";\nimport { useEffect, useReducer, useState } from \"react\";\nimport {\n accountsForRefinancingAction,\n Action,\n applicationLockedAction,\n checkExpensesOffersAction,\n creditChecksAction,\n customerOfferAction,\n emptyParallelFlowParams,\n emptyRework,\n errorAction,\n existingApplication3PErrorAction,\n existingClientAction,\n existingClientSuspenseAction,\n expensesAndAdditionalIncomeAction,\n expensesAndAdditionalIncomeAction2,\n expensesAndAdditionalIncomeReworkAction,\n foldState,\n followUpAndSignatureAction,\n goBackAction,\n goToStepAction,\n kycAction,\n landing,\n landingAction,\n loading,\n maxNumberChangesReachedAction,\n micropaymentAction,\n micropaymentOverviewAction,\n offerListAction,\n offerListReworkAction,\n offerReviewAction,\n packageSelectionAction,\n reasonNotSavedOnExit,\n reducer,\n rejectAction,\n RejectionReason,\n reloadAction,\n repaidLoansAction,\n restoreApplicationAction,\n restoreStepAction,\n Rework,\n saveCustomerOfferSuspenseAction,\n select3PAction,\n sendAdditionalIncomeAction,\n shouldShowFormsOnExit,\n State,\n summaryAction,\n uploadDocumentsAction,\n uploadIdAction,\n verifyPhoneAndEmailAction,\n virtualCardAction,\n} from \"./StandardLoanState\";\nimport { Landing } from \"./Landing/Landing\";\nimport * as api from \"./api\";\nimport { ParallelFlowParameters } from \"./api\";\nimport * as reworkApi from \"./Rework/api\";\nimport { UploadId } from \"./UploadId/UploadId\";\nimport { CreditChecks } from \"./CreditChecks/CreditChecks\";\nimport { ExistingClient } from \"./ExistingClient/ExistingClient\";\nimport { RestoreDialog } from \"./RestoreDialog\";\nimport { OfferList } from \"./OfferList/OfferList\";\nimport { KYC } from \"./KYC/KYC\";\nimport { FinalFeedback } from \"./Results/FinalFeedback\";\nimport ExitProcessDialogWrapper from \"./ExitProcessDialogWrapper\";\nimport { CustomerOffer } from \"./CustomerOffer/CustomerOffer\";\nimport { ExpensesAndAdditionalIncome } from \"./ExpensesAndAdditionalIncome/ExpensesAndAdditionalIncome\";\nimport {\n CredentialStatus,\n FollowUpAndSignature,\n} from \"./FollowUpAndSignature/FollowUpAndSignature\";\nimport { OfferReview } from \"./OfferReview/OfferReview\";\nimport {\n foldFlowType,\n RestoredRecapData,\n StandardLoanFlowType,\n UnderAgeError,\n mapSignatureToExistingClientAuthMethod,\n} from \"./domain\";\nimport { UploadRequiredDocuments } from \"./UploadDocuments/UploadDocuments\";\nimport { ExistingApplication3PError } from \"./ExistingApplication3PError/ExistingApplication3PError\";\nimport { AccountsForRefinancing } from \"./Refinancing/AccountsForRefinancing\";\nimport { MicroTransaction } from \"./MicroTransaction/MicroTransaction\";\nimport { ContractsSent } from \"./ContractsSent/ContractsSent\";\nimport { ExistingClientAuthenticationMethod } from \"../globalDomain\";\nimport { UserValidationWrapper } from \"./UserValidationWrapper\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { useFlowTypeCases } from \"./useFlowTypeCases\";\nimport { useSteps } from \"./useSteps\";\nimport {\n foldRestoreDataType,\n RestoreDataObjectSL,\n} from \"../Common/OpenLoanApplicationWrapper/domain\";\nimport { SLSummary } from \"./Results/SLSummary\";\nimport { StartNewFlow } from \"../Common/StartNewFlow\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { ConfirmClientData } from \"./Rework/ConfirmClientData\";\nimport { MicroTransactionOverview } from \"./MicroTransaction/MicroTransactionOverview\";\nimport { AuthMethodCalculateBySignatureType } from \"../Common/AuthMethodCalculateBySignatureType\";\nimport {\n ApplicationStatus,\n SLApplicationStatusFinished,\n} from \"../Common/ProcessStoreList/api\";\nimport { OfferReviewPush } from \"./OfferReview/OfferReviewPush\";\nimport { ReloadSuspense } from \"./ReloadSuspense\";\nimport { ExistingClientSuspense } from \"./ExistingClient/ExistingClientSuspense\";\nimport { AdditionalIncomesCheck } from \"./ExpensesAndAdditionalIncome/AdditionalIncome/AdditionalIncomesCheck\";\nimport { CheckExpensesOffers } from \"./OfferList/CheckExpensesOffers\";\nimport { SendAdditionalIncome } from \"./OfferList/SendAdditionalIncome\";\nimport { useAppContext } from \"../useAppContext\";\nimport { useIs3PChannel, useIsInPersonChannel } from \"../useChannel\";\nimport * as uploadDocumentsApi from \"./UploadDocuments/api\";\nimport { AfterSignature } from \"./FollowUpAndSignature/LowRiskClient/AfterSignature\";\nimport { SaveCustomerOfferSuspense } from \"./ExpensesAndAdditionalIncome/SaveCustomerOfferSuspense\";\nimport { ContactChange } from \"../ClientProfile/ContactChange\";\nimport Select3P from \"./Select3P/Select3P\";\nimport { MainContent } from \"../Common/MainContent\";\nimport { ApplicationLockedPopup } from \"../Common/Dialogs/ApplicationLockedPopup\";\nimport { IncomeSourceType } from \"./IncomeForm/domain\";\nimport { PackagesSelection } from \"../PackagesSelection/PackagesSelection\";\nimport { VirtualCardsSL } from \"./VirtualCards/VirtualCardsSL\";\nimport { PackageType } from \"../PackagesSelection/api\";\nimport { GDPR } from \"../GDPR/GDPR\";\nimport { RepaidLoans } from \"./RepaidLoans/RepaidLoans\";\n\ntype Props = {\n onExit: Option<\n (isApplicationSaved: boolean, reasonNotSaved?: LocaleKey) => unknown\n >;\n onClientExists: (findABranch: boolean) => unknown;\n flowType: StandardLoanFlowType;\n authenticationMethod: Option;\n initialLoanOffer: Option;\n onPhoneVerified: Option>;\n restoreDataObject: Option;\n onAgeValidationFail: Option<() => unknown>;\n applicationStatus: Option;\n isProspectClient?: boolean;\n isCredentialsAndSigningRemote?: boolean;\n on3PExistingClient?: (loanOffer: Option) => unknown;\n clientExists: boolean;\n};\n\nexport default function StandardLoan(props: Props) {\n const formatMessage = useFormatMessage();\n const { startNewFlow } = useAuthenticationContext();\n const isInPersonChannel = useIsInPersonChannel();\n const is3PChannel = useIs3PChannel();\n\n const [isExiting, setIsExiting] = useState(false);\n const [isCreditChecksConfirmed, setIsCreditChecksConfirmed] = useState(false);\n const [currentLoanOffer, setCurrentLoanOffer] = useState<\n Option\n >(props.initialLoanOffer);\n const startApplication = useCommand(api.startApplication);\n const requiredDocuments = useCommand(api.requiredDocuments);\n const [state, dispatch] = useReducer(reducer, loading());\n\n const [existingClient, setExistingClient] = useState(\n pipe(\n props.restoreDataObject,\n option.map(r => r.restoreData.existingClient)\n )\n );\n\n const [incomeSourceType, setIncomeSourceType] = useState(\"Employed\");\n\n const { isPWSRemote, isTLS, is3P } = useFlowTypeCases(props.flowType);\n\n const {\n apiParameters: { tenant },\n config: { unicreditBranchesMapURL, enableVirtualCardsLoanImpl },\n } = useAppContext();\n\n const generateOtp = useCommand(api.generateIdentificationOtp);\n const verifyOtp = useCommand(api.verifyIdentificationOtp);\n const checkExistingApplication = useCommand(api.checkExistingApplication);\n const sendMemorandum = useCommand(api.sendMemorandum);\n const getNewestApplication = useCommand(api.newestApplicationInProgress);\n const isApplicationLocked = useCommand(api.isApplicationLocked);\n const restoreApplication = useCommand(api.restoreNewestApplication);\n const deleteCurrentApplication = useCommand(api.deleteApplication);\n const sendFeedback = useCommand(api.exitProcess);\n const saveEmailUploadLinkData = useCommand(api.saveEmailUploadLinkData);\n const areExternalLiabilitiesSelected = useCommand(\n api.areExternalLiabilitiesSelected\n );\n const isKycNeeded = useCommand(api.isKycNeeded);\n const getIsCBRejected = useCommand(api.getIsCBRejected);\n const updateLoanOffer = useCommand(api.updateLoanOffer);\n const getReworkDetails = useCommand(reworkApi.reworkDetails);\n const getReworkOldValues = useCommand(reworkApi.getReworkOldValues);\n const getClientExisting = useCommand(api.isExistingClient);\n const resetCredentialsProcess = useCommand(api.resetCredentialsProcess);\n const confirmUpload = useCommand(uploadDocumentsApi.confirmUpload);\n const getSignatureStatus = useCommand(api.getSignatureStatus);\n const initDefaults3P = useCommand(api.initDefaults3P);\n\n const saveApplication = useCommand(api.saveApplication);\n const closeApplication = useCommand(api.closeApplication);\n\n const hasParallelFlow = useCommand(api.hasParallelFlow);\n const getRequiredDocumentsReceived = useCommand(api.checkRequiredDocuments);\n\n const choosePackageType = useCommand(api.choosePackageType);\n const savePhysicalCard = useCommand(api.savePhysicalCardValue);\n const virtualCardNext = useCommand(api.virtualCardNext);\n const transitionToMasterCard = useCommand(api.transitionToMasterCard);\n\n const isClientFlow = [\"SmartBanking\", \"HomeBanking\"].some(\n flowType => flowType === props.flowType\n );\n\n const isExistingClient = pipe(\n existingClient,\n option.getOrElse(() => props.clientExists)\n );\n\n const isRework = pipe(\n props.restoreDataObject,\n option.map(r => r.restoreData.festep === \"UNDER_REWORK\"),\n option.getOrElse(constFalse)\n );\n\n const { getSteps, goToStep } = useSteps({\n flowType: props.flowType,\n state,\n dispatch,\n stepVisibility: stepVisibilityFromReworkSteps(state),\n isRework: isRework,\n isExistingClient,\n });\n\n window.onunload = function () {\n if (shouldShowFormsOnExit(state, isCreditChecksConfirmed)) {\n saveApplication()();\n } else {\n closeApplication()();\n }\n window.onunload = null;\n };\n\n const dispatchWithRejectionCheck = (action: Action) => {\n pipe(\n getIsCBRejected(),\n taskEither.chain(({ cbRejected }) => {\n return taskEither.fromIO(() =>\n pipe(\n cbRejected,\n boolean.fold(\n () => dispatch(action),\n () => dispatch(rejectAction(\"CBRejected\"))\n )\n )\n );\n })\n )();\n };\n\n const handleKyc = (\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean\n ) => {\n return pipe(\n props.authenticationMethod,\n option.fold(\n () =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n kycAction(hasRefinancingCredits, hasRepaidLoans)\n )\n ),\n () =>\n pipe(\n isKycNeeded(),\n taskEither.chain(({ isKycNeeded }) =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n isKycNeeded\n ? kycAction(hasRefinancingCredits, hasRepaidLoans)\n : //TODO: for TLS, should this go to micropayment before signature?\n followUpAndSignatureAction(\n hasRefinancingCredits,\n hasRepaidLoans,\n isKycNeeded\n )\n )\n )\n )\n )\n )\n );\n };\n\n const handleAccountsForRefinancingAndKYC = (\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean\n ) =>\n pipe(\n props.restoreDataObject,\n option.fold(\n constFalse,\n restoreData => restoreData.restoreData.festep === \"UNDER_REWORK\"\n ),\n boolean.fold(\n () =>\n pipe(\n areExternalLiabilitiesSelected(),\n taskEither.chain(({ externalLiabilities }) => {\n if (externalLiabilities) {\n return taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n accountsForRefinancingAction(hasRefinancingCredits)\n )\n );\n } else if (hasRepaidLoans) {\n return taskEither.fromIO(() =>\n dispatchWithRejectionCheck(repaidLoansAction())\n );\n } else {\n return handleKyc(externalLiabilities, hasRepaidLoans);\n }\n })\n ),\n () =>\n taskEither.fromIO(() => dispatch(goToStepAction(\"ReworkNextStep\")))\n )\n );\n\n const handlePackageSelection = (loanOffer: api.LoanOffer) =>\n pipe(\n props.restoreDataObject,\n option.fold(\n constFalse,\n restoreData => restoreData.restoreData.festep === \"UNDER_REWORK\"\n ),\n boolean.fold(\n () =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n packageSelectionAction(loanOffer, option.none)\n )\n ),\n () =>\n taskEither.fromIO(() => dispatch(goToStepAction(\"ReworkNextStep\")))\n )\n );\n\n const handleAfterOfferReview = (\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean,\n loanOffer: api.LoanOffer\n ) => {\n if (\n option.isSome(props.applicationStatus) &&\n props.applicationStatus.value === \"PENDING_SIGNATURE\"\n ) {\n //user restored the application from link, it has all steps confirmed except for signing\n return taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n followUpAndSignatureAction(\n hasRefinancingCredits,\n hasRepaidLoans,\n false,\n false\n )\n )\n );\n }\n\n return enableVirtualCardsLoanImpl && !isExistingClient\n ? handlePackageSelection(loanOffer)\n : handleAccountsForRefinancingAndKYC(\n hasRefinancingCredits,\n hasRepaidLoans\n );\n };\n\n const onChooseCard = (packageType: PackageType, loanOffer: api.LoanOffer) => {\n return pipe(\n choosePackageType({ type: packageType }),\n taskEither.chain(() =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(virtualCardAction(loanOffer))\n )\n ),\n taskEither.mapLeft(constVoid)\n );\n };\n\n const handleAfterVirtualCard = (\n hasRefinancingCredits: boolean,\n hasRepaidLoans: boolean\n ) => {\n return pipe(\n virtualCardNext(),\n taskEither.chain(() =>\n handleAccountsForRefinancingAndKYC(\n hasRefinancingCredits,\n hasRepaidLoans\n )\n ),\n taskEither.mapLeft(constVoid)\n );\n };\n\n const handleError: (\n errors: UnderAgeError | unknown\n ) => UnderAgeError | unknown = errors => {\n return errors;\n };\n\n const navigateToFindBranches = () => {\n window.location.href = unicreditBranchesMapURL;\n };\n\n const runStartApplication = () =>\n pipe(\n startApplication(),\n taskEither.mapLeft(handleError),\n taskEither.chain(defaultOffer =>\n pipe(\n currentLoanOffer,\n option.fold(\n () =>\n taskEither.fromIO(() =>\n dispatch(verifyPhoneAndEmailAction(option.some(defaultOffer)))\n ),\n initialOffer =>\n pipe(\n updateLoanOffer({\n amount: option.some(initialOffer.amount),\n tenor: option.some(initialOffer.tenor),\n }),\n taskEither.chain(offer =>\n taskEither.fromIO(() =>\n dispatch(verifyPhoneAndEmailAction(option.some(offer)))\n )\n )\n )\n )\n )\n )\n );\n\n const dispatchFirstStep = (\n loanOffer: Option\n ): TaskEither => {\n return pipe(\n isPWSRemote,\n boolean.fold(\n () =>\n pipe(\n is3P,\n boolean.fold(\n () => taskEither.fromIO(() => dispatch(landingAction())),\n () =>\n option.isSome(loanOffer)\n ? startCreditChecks3PExistingClient(loanOffer.value)\n : taskEither.fromIO(() => dispatch(landingAction()))\n )\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(verifyPhoneAndEmailAction(option.none))\n )\n )\n );\n };\n\n const isApplicationFinished = (\n applicationStatus: Option\n ) =>\n pipe(\n applicationStatus,\n option.fold(constFalse, status => SLApplicationStatusFinished.is(status))\n );\n\n const getReworkData = (\n restoredData: api.RestoreNewestLoanApplicationOutput\n ) =>\n pipe(\n getReworkDetails(),\n taskEither.map(reworkSteps => ({\n reworkSteps: option.some(reworkSteps.steps),\n oldValues: option.none,\n newValues: option.some(\n restoredData as api.RestoreNewestLoanApplicationOtherStepsOutput\n ),\n needContractsUpdate: reworkSteps.needContractsUpdate,\n reworkAll: reworkSteps.reworkAll,\n })),\n taskEither.chain(rework =>\n pipe(\n getReworkOldValues(),\n taskEither.map(oldValues => ({\n ...rework,\n oldValues: option.some(oldValues),\n }))\n )\n )\n );\n\n const dispatchRework = (\n restoredData: api.RestoreNewestLoanApplicationOutput,\n loanOffer: Option,\n parallelFlowParameters: ParallelFlowParameters,\n applicationStatus: Option,\n cardProviderChange: boolean\n ) =>\n pipe(\n restoredData.festep === \"AUTHORIZE_PUSH\" ||\n restoredData.festep === \"REMOTE_SIGNATURE\",\n boolean.fold(\n () =>\n pipe(\n isApplicationFinished(applicationStatus),\n boolean.fold(\n () =>\n pipe(\n restoredData,\n option.fromPredicate(\n () => restoredData.festep === \"UNDER_REWORK\"\n ),\n option.fold(\n () =>\n taskEither.fromIO(() => {\n dispatch(\n restoreApplicationAction({\n restoredData,\n applicationStatus,\n loanOffer,\n cardProviderChange,\n rework: emptyRework,\n isErrorFetchingRestoredData: false,\n parallelFlowParameters: parallelFlowParameters,\n })\n ); // NO REWORK\n }),\n () =>\n pipe(\n getReworkData(restoredData),\n taskEither.fold(\n () => dispatchFirstStep(loanOffer),\n rework =>\n onRestoreApplication(restoredData, rework, true)\n )\n )\n )\n ),\n () =>\n taskEither.fromIO(() =>\n //application is finished, show final screen\n dispatch(\n restoreStepAction(\n restoredData,\n false,\n emptyRework,\n props.applicationStatus,\n \"NONE\"\n )\n )\n )\n )\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(\n restoreApplicationAction({\n restoredData,\n applicationStatus,\n loanOffer,\n cardProviderChange,\n rework: emptyRework,\n isErrorFetchingRestoredData: false,\n parallelFlowParameters: parallelFlowParameters,\n })\n )\n )\n )\n );\n\n const checkRestoredData = (\n restoreDataOption: Option,\n loanOffer: Option,\n parallelFlowParameters: ParallelFlowParameters,\n applicationStatus: Option,\n cardProviderChange: boolean\n ): TaskEither => {\n const hasParallelFlow =\n parallelFlowParameters.hasCAFlowInProgress ||\n parallelFlowParameters.hasCAFlowSentToBO ||\n parallelFlowParameters.hasCFFlowSentToBO;\n\n if (hasParallelFlow) {\n return taskEither.fromIO(() => {\n dispatch(\n restoreApplicationAction({\n isErrorFetchingRestoredData: true,\n loanOffer: loanOffer,\n parallelFlowParameters: parallelFlowParameters,\n })\n );\n });\n }\n\n return pipe(\n restoreDataOption,\n option.fold(\n () => dispatchFirstStep(loanOffer),\n restoredData =>\n dispatchRework(\n restoredData,\n loanOffer,\n parallelFlowParameters,\n applicationStatus,\n cardProviderChange\n )\n )\n );\n };\n\n const checkNewestApplication = (\n loanOffer: Option,\n restoreData: Option\n ): TaskEither =>\n pipe(\n getNewestApplication(),\n taskEither.fold(\n error =>\n taskEither.fromIO(() => {\n const status = \"status\" in error && error.status;\n if (status === \"TOO_EARLY\") {\n return dispatch(rejectAction(\"RestoredTooEarly\"));\n }\n return dispatch(\n restoreApplicationAction({\n isErrorFetchingRestoredData: true,\n parallelFlowParameters: emptyParallelFlowParams,\n loanOffer,\n })\n );\n }),\n restoreDataWrapper => {\n const correctRestoreData = option.isSome(restoreData)\n ? restoreData\n : restoreDataWrapper.restoreData;\n\n setExistingClient(\n pipe(\n correctRestoreData,\n option.map(r => r.existingClient)\n )\n );\n\n const correctApplicationStatus = option.isSome(\n props.applicationStatus\n )\n ? props.applicationStatus\n : restoreDataWrapper.status;\n\n return pipe(\n restoreDataWrapper.applicationId,\n option.fold(\n () => taskEither.right({ locked: false }),\n applicationId => isApplicationLocked({ applicationId })\n ),\n taskEither.chain(({ locked }) => {\n if (locked) {\n return taskEither.fromIO(() =>\n dispatch(applicationLockedAction())\n );\n } else {\n return pipe(\n correctApplicationStatus,\n option.chain(\n option.fromPredicate(status => status === \"UNDER_REWORK\")\n ),\n option.fold(\n () =>\n pipe(\n is3P,\n boolean.fold(\n () =>\n checkRestoredData(\n correctRestoreData,\n loanOffer,\n restoreDataWrapper.parallelFlowParameters,\n correctApplicationStatus,\n restoreDataWrapper.cardProviderChange\n ),\n () =>\n pipe(\n restoreDataWrapper.responseWithDifferentBroker,\n boolean.fold(\n () =>\n checkRestoredData(\n correctRestoreData,\n loanOffer,\n restoreDataWrapper.parallelFlowParameters,\n correctApplicationStatus,\n restoreDataWrapper.cardProviderChange\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(existingApplication3PErrorAction())\n )\n )\n )\n )\n ),\n () => {\n return pipe(\n correctRestoreData,\n option.fold(\n () =>\n taskEither.fromIO(() =>\n dispatch(\n restoreApplicationAction({\n isErrorFetchingRestoredData: true,\n parallelFlowParameters:\n restoreDataWrapper.parallelFlowParameters,\n loanOffer,\n })\n )\n ),\n restoredData =>\n taskEither.fromIO(() =>\n dispatch(\n restoreApplicationAction({\n restoredData,\n applicationStatus: correctApplicationStatus,\n loanOffer,\n rework: emptyRework,\n isErrorFetchingRestoredData: false,\n parallelFlowParameters:\n restoreDataWrapper.parallelFlowParameters,\n cardProviderChange:\n restoreDataWrapper.cardProviderChange,\n })\n )\n )\n )\n );\n }\n )\n );\n }\n })\n );\n }\n )\n );\n\n const startCreditChecks = (\n loanOffer: api.LoanOffer\n ): TaskEither => {\n return pipe(\n getClientExisting(),\n taskEither.chain(data =>\n taskEither.fromIO(() =>\n setExistingClient(option.some(data.existingClient))\n )\n ),\n taskEither.chain(sendMemorandum),\n taskEither.chain(() =>\n taskEither.fromIO(() => dispatch(creditChecksAction(loanOffer)))\n )\n );\n };\n\n const checkParallelFlow = (\n loanOffer: api.LoanOffer\n ): TaskEither =>\n pipe(\n hasParallelFlow(),\n taskEither.bimap(\n () => {\n is3P\n ? startCreditChecks3P(loanOffer)()\n : startCreditChecks(loanOffer)();\n },\n parallelFlowParams =>\n pipe(\n parallelFlowParams,\n option.fold(\n () => {\n is3P\n ? startCreditChecks3P(loanOffer)()\n : startCreditChecks(loanOffer)();\n },\n params => {\n if (\n params.hasCFFlowSentToBO ||\n params.hasCAFlowSentToBO ||\n params.hasCAFlowInProgress\n ) {\n dispatch(\n restoreApplicationAction({\n isErrorFetchingRestoredData: true,\n loanOffer: option.some(loanOffer),\n parallelFlowParameters: params,\n })\n ); // NO REWORK\n } else {\n is3P\n ? startCreditChecks3P(loanOffer)()\n : startCreditChecks(loanOffer)();\n }\n }\n )\n )\n )\n );\n\n const startCreditChecks3PExistingClient = (loanOffer: api.LoanOffer) =>\n pipe(\n initDefaults3P(),\n taskEither.chain(() => taskEither.fromIO(constVoid)),\n taskEither.chain(sendMemorandum),\n taskEither.chain(() =>\n taskEither.fromIO(() => dispatch(creditChecksAction(loanOffer)))\n )\n );\n\n const startCreditChecks3P = (loanOffer: api.LoanOffer) =>\n pipe(\n getClientExisting(),\n taskEither.chain(data =>\n pipe(\n data.existingClient,\n boolean.fold(\n () =>\n pipe(\n taskEither.fromIO(() =>\n setExistingClient(option.some(data.existingClient))\n ),\n taskEither.chain(sendMemorandum),\n taskEither.chain(() =>\n taskEither.fromIO(() =>\n dispatch(creditChecksAction(loanOffer))\n )\n )\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(\n existingClientSuspenseAction(option.some(loanOffer), false)\n )\n )\n )\n )\n )\n );\n\n const onCompleteUploadId = (loanOffer: api.LoanOffer) =>\n pipe(\n isPWSRemote,\n boolean.fold(\n () =>\n pipe(\n checkExistingApplication(),\n taskEither.chain(\n ({ appInitiatedBySame3PUserId, applicationExists }) =>\n pipe(\n applicationExists,\n boolean.fold(\n () => checkParallelFlow(loanOffer),\n () =>\n pipe(\n is3P,\n boolean.fold(\n () =>\n checkNewestApplication(\n option.some(loanOffer),\n option.none\n ),\n () =>\n pipe(\n appInitiatedBySame3PUserId,\n boolean.fold(\n () =>\n taskEither.fromIO(() =>\n dispatch(existingApplication3PErrorAction())\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(\n existingClientSuspenseAction(\n option.some(loanOffer),\n true\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n ),\n () =>\n pipe(\n checkExistingApplication(),\n taskEither.chain(({ applicationExists }) =>\n pipe(\n applicationExists,\n boolean.fold(\n () => checkParallelFlow(loanOffer),\n () =>\n checkNewestApplication(option.some(loanOffer), option.none)\n )\n )\n )\n )\n )\n );\n\n // const selectedOfferCommand = useCommand(getSelectedOffer);\n\n const retrieveIsKycNeeded = (\n feStep: api.RestoreNewestLoanApplicationOutput[\"festep\"]\n ): TaskEither => {\n switch (feStep) {\n case \"CREDIT_CHECKS\":\n case \"REVIEW_INFORMATION\":\n case \"FINALISE_OFFER_MAIN_SCREEN\":\n case \"EXPENSE\":\n case \"ADDITIONAL_INCOME\":\n case \"CHOOSE_OFFER\":\n case \"REVIEW_OFFER\":\n case \"AUTHORIZE_PUSH\":\n case \"REMOTE_SIGNATURE\":\n case \"FINAL_PAGE\":\n case \"UNDER_REWORK\":\n return taskEither.fromIO(() => false);\n case \"KYC\":\n return taskEither.fromIO(() => true);\n case \"PERSONAL_DATA\":\n case \"MICROPAYMENT\":\n case \"PACKAGE_SELECTION\":\n case \"VIRTUAL_CARDS\":\n case \"ACCOUNTS_FOR_REFINANCING\":\n case \"REPAID_LOANS\":\n case \"CLIENT_CREDENTIALS\":\n case \"UPLOAD_DOCUMENTS\":\n case \"SIGNATURE\":\n return pipe(\n isKycNeeded(),\n taskEither.chain(response =>\n taskEither.fromIO(() => response.isKycNeeded)\n )\n );\n }\n };\n\n const onRestoreApplication = (\n restoredData: api.RestoreNewestLoanApplicationOutput,\n rework: Rework,\n restoreWithDialog: boolean\n ) =>\n pipe(\n props.restoreDataObject,\n option.fold(\n () => restoreApplication({ restoreWithDialog: restoreWithDialog }),\n restoreDataObject => {\n if (restoreDataObject.restoreDataType === \"latest\") {\n return restoreApplication({ restoreWithDialog: restoreWithDialog });\n }\n return taskEither.fromIO(constVoid);\n }\n ),\n taskEither.fold(\n error => {\n const status = \"status\" in error && error.status;\n if (status === \"TOO_EARLY\") {\n return taskEither.fromIO(() =>\n dispatch(rejectAction(\"RestoredTooEarly\"))\n );\n }\n return taskEither.fromIO(() => dispatch(landing())); // KOPage?\n },\n () =>\n pipe(\n restoredData.festep === \"UPLOAD_DOCUMENTS\",\n boolean.fold(\n () => taskEither.fromIO(constVoid),\n () => saveEmailUploadLinkData()\n ),\n taskEither.chain(() =>\n pipe(\n restoredData.festep === \"REVIEW_INFORMATION\",\n boolean.fold(\n () => taskEither.fromIO(constVoid),\n () =>\n taskEither.fromIO(() => setIsCreditChecksConfirmed(true))\n )\n )\n ),\n taskEither.chain(() =>\n pipe(\n restoredData.festep === \"UNDER_REWORK\" &&\n rework === emptyRework,\n boolean.fold(\n () => taskEither.fromIO(constVoid),\n () =>\n pipe(\n getReworkData(restoredData),\n taskEither.fold(\n () => taskEither.fromIO(constVoid),\n reworkData => {\n rework = reworkData;\n return taskEither.fromIO(constVoid);\n }\n )\n )\n )\n )\n ),\n taskEither.chain(() => {\n return pipe(\n getSignatureStatus(),\n taskEither.chain(signatureStatus =>\n pipe(\n retrieveIsKycNeeded(restoredData.festep),\n taskEither.chain(isKycNeeded =>\n taskEither.fromIO(() =>\n dispatch(\n restoreStepAction(\n restoredData,\n isKycNeeded,\n rework,\n props.applicationStatus,\n signatureStatus.signatureStatus\n )\n )\n )\n )\n )\n )\n );\n })\n )\n )\n );\n\n useEffect(() => {\n pipe(\n state.type === \"Loading\",\n boolean.fold(constVoid, () =>\n pipe(\n props.authenticationMethod,\n option.fold(\n props.flowType === \"TLSAgent\"\n ? checkNewestApplication(option.none, option.none)\n : dispatchFirstStep(props.initialLoanOffer),\n pipe(\n props.restoreDataObject,\n option.fold(\n () =>\n props.flowType === \"TLSAgent\"\n ? taskEither.fromIO(() =>\n dispatch(\n existingClientSuspenseAction(option.none, false)\n )\n )\n : checkNewestApplication(\n is3P ? props.initialLoanOffer : option.none,\n option.none\n ),\n restoreDataObject =>\n foldRestoreDataType(restoreDataObject.restoreDataType, {\n onById: () =>\n dispatchRework(\n restoreDataObject.restoreData,\n option.none,\n emptyParallelFlowParams,\n props.applicationStatus,\n !!restoreDataObject.restoreData.cardProviderChange\n ),\n onLatest: () =>\n checkNewestApplication(\n option.none,\n option.some(restoreDataObject.restoreData)\n ),\n })\n )\n )\n )\n )\n )\n );\n }, [props.authenticationMethod, state.type]);\n\n const extractRecapData = (\n restoredData: api.RestoreNewestLoanApplicationOutput\n ): RestoredRecapData => ({\n loanAmount: {\n amount: restoredData.genericLoanResponse.totalAmount,\n currency: restoredData.genericLoanResponse.currency,\n },\n instalment: {\n amount: restoredData.genericLoanResponse.installment,\n currency: restoredData.genericLoanResponse.currency,\n },\n tenor: restoredData.genericLoanResponse.tenor,\n interestRate: restoredData.genericLoanResponse.interestRate,\n feStep: restoredData.festep as LocalizedString,\n });\n\n const goToCreditChecksWithMemorandum = (loanOffer: api.LoanOffer) =>\n pipe(\n getClientExisting(),\n taskEither.chain(data =>\n taskEither.fromIO(() =>\n setExistingClient(option.some(data.existingClient))\n )\n ),\n taskEither.chain(sendMemorandum),\n taskEither.chain(() =>\n taskEither.fromIO(() => dispatch(creditChecksAction(loanOffer)))\n )\n );\n\n const landingStep = (loanOffer: api.LoanOffer, show3P: boolean | undefined) =>\n show3P\n ? dispatch(select3PAction(loanOffer))\n : pipe(\n props.authenticationMethod,\n option.fold(() => {\n setCurrentLoanOffer(option.some(loanOffer));\n dispatch(verifyPhoneAndEmailAction(option.some(loanOffer)));\n }, goToCreditChecksWithMemorandum(loanOffer))\n );\n\n enum GDPR_STATE {\n NO,\n YES,\n PAPER_BASED,\n }\n const gdprType: GDPR_STATE = pipe(\n state,\n foldState({\n Loading: () => GDPR_STATE.NO,\n Error: () => GDPR_STATE.NO,\n ApplicationLocked: () => GDPR_STATE.NO,\n ExistingApplication3PError: () => GDPR_STATE.NO,\n Landing: () => GDPR_STATE.NO,\n AddPhoneNumber: () => GDPR_STATE.NO,\n PhoneAndEmailVerification: () => GDPR_STATE.NO,\n MaxNumberChangesReached: () => GDPR_STATE.NO,\n UploadID: () => GDPR_STATE.NO,\n ExistingClient: () => GDPR_STATE.NO,\n ExistingClientSuspense: () => GDPR_STATE.NO,\n FollowUpAndSignature: () => GDPR_STATE.NO,\n AccountsForRefinancing: () => GDPR_STATE.YES,\n RepaidLoans: () => GDPR_STATE.YES,\n CheckAdditionalIncomes: () => GDPR_STATE.YES,\n CheckExpensesOffers: () => GDPR_STATE.YES,\n CreditChecks: () => GDPR_STATE.YES,\n VirtualCard: () => GDPR_STATE.YES,\n CustomerOffer: () => GDPR_STATE.YES,\n ExpensesAndAdditionalIncome: () => GDPR_STATE.YES,\n KYC: () => GDPR_STATE.YES,\n Micropayment: () => GDPR_STATE.YES,\n MicropaymentOverview: () => GDPR_STATE.YES,\n OfferList: () => GDPR_STATE.YES,\n OfferReview: () => GDPR_STATE.YES,\n OfferReviewPush: () => GDPR_STATE.YES,\n PackageSelection: () => GDPR_STATE.YES,\n SendAdditionalIncome: () => GDPR_STATE.YES,\n PersonalData: () => GDPR_STATE.NO,\n Rejected: () => GDPR_STATE.NO,\n ReloadSuspense: () => GDPR_STATE.NO,\n RestoreApplication: () => GDPR_STATE.NO,\n SaveCustomerOfferSuspense: () => GDPR_STATE.NO,\n Select3P: () => GDPR_STATE.NO,\n UploadDocuments: () => GDPR_STATE.PAPER_BASED,\n AfterSignature: () => GDPR_STATE.PAPER_BASED,\n Summary: () => GDPR_STATE.PAPER_BASED,\n })\n );\n const [gdprDialogDisplayed, setGdprDialogDisplayed] = useState(false);\n const showGdprDialog =\n tenant === \"SK\" &&\n isInPersonChannel &&\n !pipe(existingClient, option.getOrElse(constFalse)) &&\n gdprType != GDPR_STATE.NO &&\n !isRework &&\n !gdprDialogDisplayed;\n function render() {\n return (\n {\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n );\n })}\n >\n <>\n {pipe(\n state,\n foldState({\n Loading: () => (\n \n \n \n ),\n Error: state => (\n \n ),\n Landing: () =>\n option.isSome(props.authenticationMethod) ? (\n (\n \n isClientFlow\n ? dispatch(\n existingClientSuspenseAction(\n option.some(loanOffer),\n false\n )\n )\n : landingStep(loanOffer, show3P)\n }\n onAgeValidationFail={props.onAgeValidationFail}\n />\n )}\n />\n ) : (\n \n landingStep(loanOffer, show3P)\n }\n onAgeValidationFail={props.onAgeValidationFail}\n />\n ),\n Select3P: state => (\n \n landingStep(loanOffer, show3P)\n }\n onAgeValidationFail={props.onAgeValidationFail}\n onBack={() => dispatch(goBackAction())}\n />\n ),\n PhoneAndEmailVerification: phoneAndEmailVerificationState => (\n \n \n pipe(\n phoneAndEmailVerificationState.payload.loanOffer,\n option.fold(\n () => dispatch(landing()),\n loanOffer => dispatch(uploadIdAction(loanOffer))\n )\n )\n }\n onPhoneVerified={pipe(\n props.onPhoneVerified,\n option.fold(\n () => readerTaskEither.fromIO(constVoid),\n onPhoneVerified =>\n readerTaskEither.fromTaskEither(onPhoneVerified)\n ),\n readerTaskEither.chain(() =>\n readerTaskEither.fromTaskEither(runStartApplication())\n )\n )}\n generateOTP={generateOtp}\n verifyOTP={verifyOtp}\n hideInstructions\n onMaxNumberChangesReached={() =>\n dispatch(maxNumberChangesReachedAction())\n }\n />\n \n ),\n AddPhoneNumber: () => (\n \n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n onComplete={() => {\n dispatch(reloadAction());\n }}\n onMaxNumberChangesReached={() =>\n dispatch(maxNumberChangesReachedAction())\n }\n />\n ),\n UploadID: state => (\n \n dispatch(existingClientAction(reason))}\n onFailure={constVoid} // @TODO: handle upload failure.\n onBack={() => dispatch(goBackAction())}\n flowType={props.flowType}\n authenticationMethod={props.authenticationMethod}\n isThirdParty={is3P}\n />\n \n ),\n ExistingClientSuspense: state => (\n \n props.on3PExistingClient\n ? props.on3PExistingClient(state.payload.loanOffer)\n : pipe(\n state.payload.loanOffer,\n option.fold(constVoid, s =>\n isClientFlow\n ? goToCreditChecksWithMemorandum(s)()\n : dispatch(creditChecksAction(s))\n )\n )\n }\n onRequestFailure={reason =>\n is3P\n ? dispatch(\n rejectAction(\"USER_VALIDATION_KO_REDIRECT_BRANCH\")\n )\n : dispatch(rejectAction(reason))\n }\n hasPasswordForCommunication={true}\n isPhoneNumberVerified={true}\n isApplicationExisting={state.payload.isApplicationExisting}\n flowType={props.flowType}\n onExit={() =>\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n />\n ),\n CreditChecks: state => (\n \n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n dispatchWithRejectionCheck(\n customerOfferAction(\n personalDataOptions.personalDataOptions,\n consents\n )\n ),\n () =>\n needsAdditionalIncome && hasAdditionalIncome\n ? dispatchWithRejectionCheck(\n expensesAndAdditionalIncomeReworkAction(\n consents,\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n option.some(true),\n option.some(true),\n personalDataOptions.personalDataOptions,\n state.payload.cpiAdditionalQuestions\n )\n )\n : hasCounterOffer\n ? dispatchWithRejectionCheck(\n offerListReworkAction(\n \"Counteroffer\",\n personalDataOptions.personalDataOptions,\n consents\n )\n )\n : dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n )\n }\n onApplicationRejected={rejectionReason =>\n rejectionReason === \"BonitaRejected\"\n ? dispatch(rejectAction(\"BonitaRejected\"))\n : dispatch(rejectAction(\"CBRejected\"))\n }\n onCreditChecksConfirmed={() =>\n setIsCreditChecksConfirmed(true)\n }\n initialConsent={state.payload.initialConsent}\n getIncome={state.payload.getIncome}\n flowType={props.flowType}\n reworkData={state.payload.rework}\n onExit={option.some(() => {\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n );\n })}\n onChangeIncomeSourceType={value => {\n setIncomeSourceType(\n pipe(\n value,\n option.getOrElse(() => \"Employed\")\n )\n );\n }}\n />\n ),\n ExistingClient: state => (\n \n pipe(\n is3P,\n boolean.fold(\n () =>\n props.onClientExists(\n isPWSRemote && state.reason === \"IsExisting\"\n ),\n () =>\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n )\n )\n }\n flowType={props.flowType}\n reason={state.reason}\n />\n ),\n ExistingApplication3PError: () =>\n pipe(\n props.flowType,\n foldFlowType({\n when3P: () => (\n \n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n />\n ),\n whenHomeBanking: constNull,\n whenSmartBanking: constNull,\n whenInPerson: constNull,\n whenTLSAgent: constNull,\n whenPWSRemote: constNull,\n })\n ),\n\n RestoreApplication: state => {\n const onNotRestore = pipe(\n state.payload.parallelFlowParameters.hasCAFlowInProgress ||\n state.payload.parallelFlowParameters.hasCAFlowSentToBO ||\n state.payload.parallelFlowParameters.hasCFFlowSentToBO,\n boolean.fold(\n () =>\n pipe(\n deleteCurrentApplication(),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n window.onunload = null;\n })\n ),\n taskEither.chain(() =>\n sendFeedback({ reason: \"NONE\" })\n ),\n taskEither.chain(() =>\n pipe(\n state.payload.loanOffer,\n option.fold(\n () => dispatchFirstStep(props.initialLoanOffer),\n loanOffer =>\n state.payload.isErrorFetchingRestoredData\n ? goToCreditChecksWithMemorandum(loanOffer)\n : pipe(\n state.payload.restoredData.existingClient,\n boolean.fold(\n () =>\n pipe(\n startNewFlow,\n taskEither.chain(() =>\n dispatchFirstStep(\n option.some(loanOffer)\n )\n )\n ),\n () =>\n goToCreditChecksWithMemorandum(\n loanOffer\n )\n )\n )\n )\n )\n )\n ),\n () =>\n pipe(\n taskEither.right(constVoid),\n taskEither.chain(() =>\n sendFeedback({ reason: \"NONE\" })\n ),\n taskEither.chain(() =>\n pipe(\n state.payload.loanOffer,\n option.fold(\n () => dispatchFirstStep(props.initialLoanOffer),\n loanOffer =>\n state.payload.isErrorFetchingRestoredData\n ? goToCreditChecksWithMemorandum(loanOffer)\n : pipe(\n state.payload.restoredData.existingClient,\n boolean.fold(\n () =>\n pipe(\n startNewFlow,\n taskEither.chain(() =>\n dispatchFirstStep(\n option.some(loanOffer)\n )\n )\n ),\n () =>\n goToCreditChecksWithMemorandum(\n loanOffer\n )\n )\n )\n )\n )\n )\n )\n )\n );\n return state.payload.isErrorFetchingRestoredData ? (\n \n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n onNotRestore={onNotRestore}\n parallelFlowParameters={\n state.payload.parallelFlowParameters\n }\n onBack={onNotRestore}\n />\n ) : (\n \n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n onRestore={restoreWithDialog =>\n state.payload.isErrorFetchingRestoredData\n ? taskEither.fromIO(() => constVoid)\n : onRestoreApplication(\n state.payload.restoredData,\n state.payload.rework,\n restoreWithDialog\n )\n }\n onNotRestore={onNotRestore}\n parallelFlowParameters={\n state.payload.parallelFlowParameters\n }\n onBack={onNotRestore}\n isCredentialsAndSigningRemote={\n props.isCredentialsAndSigningRemote\n }\n cardProviderChange={state.payload.cardProviderChange}\n transitionToMasterCard={transitionToMasterCard}\n />\n );\n },\n ApplicationLocked: () => (\n \n pipe(\n props.onExit,\n option.fold(\n () => constVoid,\n onExit => onExit(false)\n )\n )\n }\n />\n ),\n CustomerOffer: state => (\n \n dispatchWithRejectionCheck(\n expensesAndAdditionalIncomeAction(\n hasRefinancingCredits,\n hasRepaidLoans\n )\n )\n }\n onBack={() => dispatchWithRejectionCheck(goBackAction())}\n onExit={(isApplicationSaved: boolean) =>\n pipe(\n props.onExit,\n option.fold(constVoid, onExit =>\n onExit(isApplicationSaved)\n )\n )\n }\n onApplicationRejected={() =>\n dispatch(rejectAction(\"CBRejected\"))\n }\n onExposureExceeded={() =>\n dispatch(rejectAction(\"ExposureExceeded\"))\n }\n authenticationMethod={props.authenticationMethod}\n restoredAdditionalQuestions={\n state.payload.cpiAdditionalQuestions\n }\n clientExists={props.clientExists}\n />\n ),\n ExpensesAndAdditionalIncome: state => (\n {\n return pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n dispatchWithRejectionCheck(\n offerListAction(\"Approved\")\n ),\n () => dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n );\n }}\n onBack={() =>\n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () => dispatchWithRejectionCheck(goBackAction()),\n () => dispatch(goToStepAction(\"ReworkPreviousStep\"))\n )\n )\n }\n onRejected={() => dispatch(rejectAction(\"LFRejected\"))}\n onCounterOffer={() =>\n dispatchWithRejectionCheck(offerListAction(\"Counteroffer\"))\n }\n onPending={() =>\n dispatchWithRejectionCheck(checkExpensesOffersAction())\n }\n showAdditionalIncomeStep={pipe(\n state.payload.needsAdditionalIncome &&\n state.payload.hasAdditionalIncome,\n option.getOrElse(constFalse)\n )}\n reworkData={state.payload.rework}\n />\n ),\n CheckAdditionalIncomes: state => (\n \n dispatch(\n expensesAndAdditionalIncomeAction2(\n hasIncomes\n ? option.some(true)\n : state.payload.needsAdditionalIncome,\n hasIncomes\n ? option.some(true)\n : state.payload.hasAdditionalIncome\n )\n )\n }\n onError={constVoid}\n />\n ),\n CheckExpensesOffers: () => (\n \n dispatchWithRejectionCheck(sendAdditionalIncomeAction())\n }\n onRejected={() => dispatch(rejectAction(\"LFRejected\"))}\n onError={() => dispatchWithRejectionCheck(goBackAction())}\n />\n ),\n SendAdditionalIncome: state => (\n \n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n dispatchWithRejectionCheck(\n offerListAction(\"Approved\")\n ),\n () =>\n dispatchWithRejectionCheck(\n saveCustomerOfferSuspenseAction(\"Approved\")\n )\n )\n )\n }\n onCounterOffer={() =>\n dispatchWithRejectionCheck(offerListAction(\"Counteroffer\"))\n }\n onRejected={() => dispatch(rejectAction(\"LFRejected\"))}\n onError={() => dispatchWithRejectionCheck(goBackAction())}\n />\n ),\n OfferList: state => (\n dispatchWithRejectionCheck(goBackAction())}\n />\n ),\n SaveCustomerOfferSuspense: () => (\n dispatchWithRejectionCheck(goBackAction())}\n onContinue={data =>\n dispatchWithRejectionCheck(offerReviewAction(data))\n }\n />\n ),\n OfferReview: state => (\n \n dispatchWithRejectionCheck(goBackAction())}\n onComplete={handleAfterOfferReview(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.loanOffer\n )}\n selectedOffer={state.payload.selectedOffer}\n onApplicationRejected={(rejectionReason: RejectionReason) =>\n dispatch(rejectAction(rejectionReason))\n }\n authenticationMethod={props.authenticationMethod}\n existingClient={pipe(\n existingClient,\n option.getOrElse(() => props.clientExists)\n )}\n />\n \n ),\n OfferReviewPush: state => (\n \n dispatchWithRejectionCheck(goBackAction())}\n onComplete={() =>\n dispatch(\n followUpAndSignatureAction(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n false // TODO Check if needed somewhere\n )\n )\n }\n selectedOffer={state.payload.selectedOffer}\n onApplicationRejected={(rejectionReason: RejectionReason) =>\n dispatch(rejectAction(rejectionReason))\n }\n authenticationMethod={props.authenticationMethod}\n existingClient={pipe(\n existingClient,\n option.getOrElse(() => props.clientExists)\n )}\n disbursementAccount={state.payload.disbursementAccount}\n />\n \n ),\n PackageSelection: state => (\n \n \n onChooseCard(packageType, state.payload.loanOffer)\n )}\n child={false}\n isCf={true}\n onBack={() => dispatchWithRejectionCheck(goBackAction())}\n />\n \n ),\n VirtualCard: state => (\n \n \n savePhysicalCard({\n checkboxValue: option.isSome(data.physicalCardSelected)\n ? data.physicalCardSelected.value\n : false,\n })()\n }\n onBack={() => dispatchWithRejectionCheck(goBackAction())}\n />\n \n ),\n AccountsForRefinancing: state => (\n \n state.payload.hasRepaidLoans\n ? taskEither.fromIO(() =>\n dispatch(repaidLoansAction())\n )\n : handleKyc(\n state.payload.hasRefinancingCredits,\n false\n ),\n () =>\n taskEither.fromIO(() =>\n dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n )\n )}\n onBack={() =>\n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () => dispatchWithRejectionCheck(goBackAction()),\n () => dispatch(goToStepAction(\"ReworkPreviousStep\"))\n )\n )\n }\n reworkData={state.payload.rework}\n />\n ),\n RepaidLoans: state => (\n \n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n handleKyc(state.payload.hasRefinancingCredits, true),\n taskEither.fromIO(() =>\n dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n )\n )\n }\n onBack={() =>\n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () => dispatchWithRejectionCheck(goBackAction()),\n () => dispatch(goToStepAction(\"ReworkPreviousStep\"))\n )\n )\n }\n reworkData={state.payload.rework}\n />\n ),\n KYC: state => (\n \n pipe(\n needsMicropayment,\n boolean.fold(\n () =>\n dispatchWithRejectionCheck(\n followUpAndSignatureAction(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true\n )\n ),\n () => dispatchWithRejectionCheck(micropaymentAction())\n )\n )\n }\n onBack={() => dispatchWithRejectionCheck(goBackAction())}\n flowType={props.flowType}\n transactionsInfo={state.payload.transactionsInfo}\n existingClient={isExistingClient}\n />\n ),\n Micropayment: state => (\n \n dispatchWithRejectionCheck(\n followUpAndSignatureAction(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true\n )\n )\n }\n onBack={() => dispatchWithRejectionCheck(goBackAction())}\n />\n ),\n MicropaymentOverview: () => ,\n ReloadSuspense: state => (\n \n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n followUpAndSignatureAction(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n true\n )\n )\n )\n )\n )}\n />\n ),\n AfterSignature: state => (\n \n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n \"TLSAgent\" === props.flowType\n ? taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.lfStatus\n )\n )\n )\n : pipe(\n getRequiredDocumentsReceived(),\n taskEither.bimap(\n () =>\n dispatch(\n errorAction(\n \"StandardLoan.UploadDocuments.requiredDocuments.notReady\"\n )\n ),\n ({ requiredDocumentsReceived }) =>\n pipe(\n requiredDocumentsReceived,\n boolean.fold(\n () => {\n dispatch(\n errorAction(\n \"StandardLoan.UploadDocuments.requiredDocuments.notReady\"\n )\n );\n },\n () =>\n pipe(\n requiredDocuments(),\n taskEither.bimap(\n () =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.selectedOffer\n .productType,\n state.payload\n .hasRefinancingCredits,\n state.payload.lfStatus\n )\n ),\n list =>\n list.length > 0\n ? dispatchWithRejectionCheck(\n uploadDocumentsAction(\n state.payload.lfStatus\n )\n )\n : dispatchWithRejectionCheck(\n summaryAction(\n state.payload\n .selectedOffer\n .productType,\n state.payload\n .hasRefinancingCredits,\n state.payload.lfStatus\n )\n )\n )\n )()\n )\n )\n )\n ),\n () =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n state.payload.lfStatus\n )\n )\n )\n )\n )()\n }\n onRetrySignature={taskEither.fromIO(() =>\n dispatch(\n followUpAndSignatureAction(\n state.payload.hasRefinancingCredits,\n state.payload.hasRepaidLoans,\n state.payload.isKycNeeded,\n false\n )\n )\n )}\n />\n ),\n FollowUpAndSignature: state => (\n (\n \n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(true))\n )\n }\n onRemoteCredentialsExit={() => {\n dispatch({ type: \"ReloadSuspense\" });\n }}\n onAfterSignature={lfStatus => {\n dispatch({\n type: \"AfterSignature\",\n payload: { lfStatus: lfStatus },\n });\n }}\n onContinue={lfStatus =>\n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n \"TLSAgent\" === props.flowType\n ? taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n lfStatus\n )\n )\n )\n : pipe(\n getRequiredDocumentsReceived(),\n taskEither.bimap(\n () =>\n dispatch(\n errorAction(\n \"StandardLoan.UploadDocuments.requiredDocuments.notReady\"\n )\n ),\n ({ requiredDocumentsReceived }) =>\n pipe(\n requiredDocumentsReceived,\n boolean.fold(\n () => {},\n () =>\n pipe(\n requiredDocuments(),\n taskEither.bimap(\n () =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload\n .selectedOffer\n .productType,\n state.payload\n .hasRefinancingCredits,\n lfStatus\n )\n ),\n list =>\n list.length > 0\n ? dispatchWithRejectionCheck(\n uploadDocumentsAction(\n lfStatus\n )\n )\n : dispatchWithRejectionCheck(\n summaryAction(\n state.payload\n .selectedOffer\n .productType,\n state.payload\n .hasRefinancingCredits,\n lfStatus\n )\n )\n )\n )()\n )\n )\n )\n ),\n () =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.selectedOffer.productType,\n state.payload.hasRefinancingCredits,\n lfStatus\n )\n )\n )\n )\n )()\n }\n onApplicationRejected={() =>\n dispatch(rejectAction(\"LFRejected\"))\n }\n authenticationMethod={\n option.isSome(signatureType)\n ? mapSignatureToExistingClientAuthMethod(\n signatureType.value,\n props.flowType,\n props.authenticationMethod\n )\n : props.authenticationMethod\n }\n rework={state.payload.rework}\n credentialStatus={pipe(\n props.restoreDataObject,\n option.fold(\n () =>\n pipe(\n state.payload.restoredData,\n option.fold<\n api.RestoreNewestLoanApplicationOutput,\n CredentialStatus\n >(\n () => ({\n type: props.clientExists\n ? \"existingClient\"\n : \"unknown\",\n }),\n r =>\n r.existingClient\n ? { type: \"existingClient\" }\n : {\n type: \"newClient\",\n shouldAskCredential:\n state.payload.shouldAskCredential,\n }\n )\n ),\n r =>\n r.restoreData.existingClient\n ? { type: \"existingClient\" }\n : {\n type: \"newClient\",\n shouldAskCredential:\n state.payload.shouldAskCredential,\n }\n )\n )}\n existingClient={pipe(\n existingClient,\n option.getOrElse(() => props.clientExists)\n )}\n isCredentialsAndSigningRemote={\n props.isCredentialsAndSigningRemote as boolean\n }\n isKycNeeded={state.payload.isKycNeeded}\n />\n )}\n />\n ),\n Rejected: state => (\n \n {\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n );\n })}\n />\n \n ),\n Summary: state =>\n pipe(\n isTLS,\n boolean.fold(\n () => (\n \"Approved\",\n status => status\n )\n )}\n hasRefinancing={state.payload.hasRefinancing}\n goToClient={() =>\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n )\n }\n clientExists={props.clientExists}\n goToMicroPayments={() =>\n dispatch(micropaymentOverviewAction())\n }\n flowType={props.flowType}\n />\n ),\n () => (\n {\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n );\n })}\n />\n )\n )\n ),\n UploadDocuments: state => (\n \n taskEither.fromIO(() => {\n return pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.productType,\n state.payload.hasRefinancing,\n state.payload.lfStatus\n )\n ),\n () => dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n );\n })\n )\n )}\n onNextWithoutConfirm={taskEither.fromIO(() =>\n pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n () =>\n dispatchWithRejectionCheck(\n summaryAction(\n state.payload.productType,\n state.payload.hasRefinancing,\n state.payload.lfStatus\n )\n ),\n () => dispatch(goToStepAction(\"ReworkNextStep\"))\n )\n )\n )}\n bankerFlowId={option.none}\n productType={option.some(\"SL\")}\n onApplicationRejected={() =>\n dispatch(rejectAction(\"CBRejected\"))\n }\n isRework={state.payload.rework !== emptyRework}\n requiredDocumentsUpToDate={\n state.payload.requiredDocumentsUpToDate\n }\n />\n ),\n PersonalData: state =>\n pipe(\n state.payload.extractedData,\n option.fold(constNull, clientData => (\n \n dispatch(goToStepAction(\"ReworkNextStep\"))\n }\n />\n ))\n ),\n MaxNumberChangesReached: () => (\n \n \n \n ),\n })\n )}\n {showGdprDialog && (\n () => {},\n onExit => () => {\n if (shouldShowFormsOnExit(state, isCreditChecksConfirmed)) {\n setIsExiting(true);\n } else {\n closeApplication()();\n onExit(false, reasonNotSavedOnExit(state));\n }\n }\n )\n )}\n onContinue={() => {\n setGdprDialogDisplayed(true);\n }}\n paperBased={gdprType == GDPR_STATE.PAPER_BASED}\n />\n )}\n \n \n );\n }\n\n return pipe(\n props.onExit,\n option.fold(\n () => (\n {\n pipe(\n props.onExit,\n option.fold(constVoid, onExit => onExit(false))\n );\n }),\n option.map(headerActionIcon.exit)\n )}\n steps={getSteps()}\n onStepClick={constVoid}\n >\n \n {render()}\n \n ),\n onExit => (\n {\n if (shouldShowFormsOnExit(state, isCreditChecksConfirmed)) {\n setIsExiting(true);\n } else {\n closeApplication()();\n onExit(false, reasonNotSavedOnExit(state));\n }\n }}\n onProcessExit={isApplicationSaved => {\n setIsExiting(false);\n onExit(isApplicationSaved);\n }}\n onDismiss={() => setIsExiting(false)}\n title={option.some(formatMessage(\"StandardLoan.Landing.Title\"))}\n backgroundImageURL={option.none}\n steps={getSteps()}\n onStepClick={goToStep}\n >\n {render()}\n \n )\n )\n );\n}\n\nfunction convertReworkStepToState(\n reworkStep: reworkApi.ReworkStep\n): State[\"type\"] {\n switch (reworkStep) {\n case \"ACCOUNTS_FOR_REFINANCING\":\n return \"AccountsForRefinancing\";\n case \"REPAID_LOANS\":\n return \"RepaidLoans\";\n case \"ADDITIONAL_INCOME\":\n return \"ExpensesAndAdditionalIncome\";\n case \"AUTHORIZATION_PAGE\":\n return \"FollowUpAndSignature\";\n case \"INCOME_AND_PERSONAL_DATA\":\n return \"CreditChecks\";\n case \"PERSONAL_DATA\":\n return \"PersonalData\";\n case \"UPLOAD_DOCUMENTS\":\n return \"UploadDocuments\";\n }\n}\n\nfunction convertReworkStepArray(\n reworkSteps: Option>\n): Option> {\n return pipe(\n reworkSteps,\n option.map(nonEmptyArray.map(step => convertReworkStepToState(step)))\n );\n}\n\nfunction stepVisibilityFromReworkSteps(\n state: State\n): Option> {\n switch (state.type) {\n case \"AccountsForRefinancing\":\n case \"RepaidLoans\":\n case \"CreditChecks\":\n case \"CustomerOffer\":\n case \"ExpensesAndAdditionalIncome\":\n case \"FollowUpAndSignature\":\n case \"OfferList\":\n case \"CheckExpensesOffers\":\n case \"SendAdditionalIncome\":\n case \"OfferReview\":\n case \"KYC\":\n case \"PersonalData\":\n case \"SaveCustomerOfferSuspense\":\n case \"UploadDocuments\":\n return convertReworkStepArray(state.payload.rework.reworkSteps);\n case \"RestoreApplication\":\n return convertReworkStepArray(\n !state.payload.isErrorFetchingRestoredData\n ? state.payload.rework.reworkSteps\n : option.none\n );\n case \"ExistingApplication3PError\":\n case \"ExistingClient\":\n case \"Landing\":\n case \"Loading\":\n case \"Micropayment\":\n case \"PhoneAndEmailVerification\":\n case \"Select3P\":\n case \"AddPhoneNumber\":\n case \"Rejected\":\n case \"MicropaymentOverview\":\n case \"Summary\":\n case \"MaxNumberChangesReached\":\n case \"UploadID\":\n case \"OfferReviewPush\":\n case \"ReloadSuspense\":\n case \"ExistingClientSuspense\":\n case \"CheckAdditionalIncomes\":\n case \"AfterSignature\":\n case \"ApplicationLocked\":\n case \"Error\":\n case \"PackageSelection\":\n case \"VirtualCard\":\n return option.none;\n }\n}\n","import { usePollingEffect } from \"../../useAPI\";\nimport { constVoid } from \"fp-ts/function\";\nimport * as uploadApi from \"../../UploadDocuments/api\";\nimport { option } from \"fp-ts\";\nimport { Dialog, SpinnerIcon } from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\n\ntype Props = {\n onDismiss: () => void;\n};\n\nexport const WaitingUploadedStatusDialog = (props: Props) => {\n const formatMessage = useFormatMessage();\n\n usePollingEffect(\n uploadApi.mobileStatus,\n {\n intervalMS: 3000,\n shouldPollingContinue: result => result.status !== \"UploadCompleted\",\n onError: constVoid,\n onSuccess: result => {\n if (result.status === \"UploadCompleted\") {\n props.onDismiss();\n }\n },\n },\n { coApplicant: option.none }\n );\n\n return (\n \n );\n};\n","import {\n Banner,\n Body,\n Box,\n buttonLink,\n Card,\n ContentRow,\n ErrorBanner,\n FileContent,\n Heading,\n Loader,\n LoadingButton,\n Stack,\n useIsMobileLayout,\n Space,\n FeedbackDialog,\n} from \"design-system\";\nimport { constNull, constVoid, pipe } from \"fp-ts/function\";\nimport * as api from \"../api\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand, usePollingEffect, useQuery } from \"../../useAPI\";\nimport { UploadDocumentsSection } from \"./UploadDocumentsSection\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport {\n nonEmptyArray,\n option,\n array,\n taskEither,\n boolean,\n either,\n} from \"fp-ts\";\nimport { useState } from \"react\";\nimport {\n decodeFileType,\n encodeFileToBase64,\n fileTypes,\n mapSubmitDocumentStatus,\n mapSubmitNoteStatus,\n} from \"../../MortgageDashboard/Documents/domain\";\nimport { selectedMainApplicant } from \"../../MortgageDashboard/mortgageDashboardUtils\";\nimport { Option } from \"fp-ts/Option\";\nimport { DocumentMime } from \"../../Common/documentAPI\";\nimport { UUID } from \"io-ts-types/lib/UUID\";\nimport * as remoteData from \"../../RemoteData\";\nimport { StandardLoanDocumentUploadDialog } from \"./StandardLoanDocumentUploadDialog\";\nimport { UploadDocumentFlowType } from \"../../globalDomain\";\nimport { IO } from \"fp-ts/IO\";\nimport { UploadDocumentsRework } from \"./UploadDocumentsRework\";\nimport { OptionalDocumentUploadDialog } from \"./OptionalDocumentUploadDialog\";\nimport { OptionalDocumentsSection } from \"./OptionalDocumentsSection\";\nimport { DocumentNoteUploadError } from \"../../Common/Dialogs/DocumentUploadDialog/domain\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { MainContent } from \"../../Common/MainContent\";\nimport { checkRequiredDocuments } from \"../api\";\nimport { BasicFullScreenLoader } from \"../../Common/BasicFullScreenLoader\";\n\ntype Props = {\n isClientFlow: boolean;\n bankerFlowId: Option;\n onNext: TaskEither;\n productType: Option;\n onApplicationRejected: IO;\n isRework?: boolean;\n requiredDocumentsUpToDate?: boolean;\n onNextWithoutConfirm: TaskEither;\n};\n\nexport function UploadRequiredDocuments(props: Props) {\n if (props.isRework) {\n return (\n \n );\n } else {\n return ;\n }\n}\n\nfunction UploadDocumentsNotReworkWithCheck(props: Props) {\n const formatMessage = useFormatMessage();\n const [requiredDocumentsAvailable] = useQuery(checkRequiredDocuments);\n\n return pipe(\n requiredDocumentsAvailable,\n remoteData.fold(\n () => ,\n constNull,\n ({ requiredDocumentsReceived }) =>\n pipe(\n requiredDocumentsReceived,\n boolean.fold(\n () => (\n \n ),\n () => \n )\n )\n )\n );\n}\n\nfunction UploadDocumentsNotRework(props: Props) {\n const [requiredDocuments, refreshList] = useQuery(api.requiredDocuments);\n return pipe(\n requiredDocuments,\n remoteData.toOption,\n option.map(documents => (\n \n )),\n option.toNullable\n );\n}\n\ntype UploadDocumentsProps = Props & {\n requiredDocuments: Option;\n refreshList: () => void;\n productType: Option;\n onApplicationRejected: IO;\n};\n\nexport function UploadDocuments(props: UploadDocumentsProps) {\n const formatMessage = useFormatMessage();\n const [formSubmitted, setFormSubmitted] = useState(false);\n const isMobileLayout = useIsMobileLayout();\n const removeDocument = useCommand(\n props.isClientFlow ? api.removeDocumentByClient : api.removeDocument\n );\n const cancelUpload = useCommand(\n props.isClientFlow ? api.cancelUploadByClient : api.cancelUpload\n );\n const uploadDocument = useCommand(\n props.isClientFlow ? api.uploadDocumentByClient : api.uploadDocument\n );\n const confirmDocumentUpload = useCommand(\n props.isClientFlow ? api.confirmDocumentByClient : api.confirmDocument\n );\n const checkNewOptionalDocument = useCommand(\n props.isClientFlow\n ? api.checkNewOptionalDocumentByClient\n : api.checkNewOptionalDocument\n );\n const confirmOptionalDocument = useCommand(\n props.isClientFlow\n ? api.confirmOptionalDocumentUploadByClient\n : api.confirmOptionalDocumentUpload\n );\n const cancelOptionalDocument = useCommand(\n props.isClientFlow\n ? api.cancelOptionalDocUploadByClient\n : api.cancelOptionalDocUpload\n );\n const removeOptionalDocument = useCommand(\n props.isClientFlow ? api.removeOptionalDocByClient : api.removeOptionalDoc\n );\n const sendLinkToClient = useCommand(api.sendLinkToClient);\n\n const getIsCBRejected = useCommand(api.getIsCBRejected);\n\n const [isLinkSent, setIsLinkSent] = useState(false);\n const [sentLinkConfirmation, showSentLinkConfirmation] = useState(\n false\n );\n const [uploadDialogDocument, setUploadDialogDocument] = useState<\n Option\n >(option.none);\n\n const [\n uploadNewOptionalDocumentDialog,\n setUploadNewOptionalDocumentDialog,\n ] = useState(false);\n\n const {\n config: { r6Enabled },\n } = useAppContext();\n\n // const r6Enabled = true;\n\n const submitWithRejectionCheck = () => {\n pipe(\n getIsCBRejected(),\n taskEither.chain(({ cbRejected }) => {\n return taskEither.fromIO(() =>\n pipe(\n cbRejected,\n boolean.fold(\n () => props.onNext(),\n () => props.onApplicationRejected()\n )\n )\n );\n })\n )();\n };\n\n const submitOnPolling = () => {\n pipe(\n getIsCBRejected(),\n taskEither.chain(({ cbRejected }) => {\n return taskEither.fromIO(() =>\n pipe(\n cbRejected,\n boolean.fold(\n () => props.onNextWithoutConfirm(),\n () => props.onApplicationRejected()\n )\n )\n );\n })\n )();\n };\n\n usePollingEffect(api.checkUploadChanges, {\n intervalMS: 3000,\n disabled: props.isClientFlow,\n shouldPollingContinue: (result: api.CheckUploadChangesOutput) =>\n !result.uploadConfirmed,\n onError: constVoid,\n onSuccess: (result: api.CheckUploadChangesOutput) => {\n if (result.uploadChanges && option.isNone(uploadDialogDocument)) {\n props.refreshList();\n }\n if (result.uploadConfirmed) {\n submitOnPolling();\n }\n },\n });\n\n const dispatchWithRejectionCheck = (\n document: Option\n ) => {\n pipe(\n getIsCBRejected(),\n taskEither.chain(({ cbRejected }) => {\n return taskEither.fromIO(() =>\n pipe(\n cbRejected,\n boolean.fold(\n () => setUploadDialogDocument(document),\n () => props.onApplicationRejected()\n )\n )\n );\n })\n )();\n };\n\n const onDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n uploadDialogDocument,\n option.fold(\n () => taskEither.left(\"GenericError\" as const),\n document =>\n pipe(\n uploadDocument({\n requiredDocumentMetadata: {\n applicationElementID: document.metadata.applicationElementID,\n clientID: document.metadata.clientID,\n documentTypeID: document.metadata.documentTypeID,\n documentTypeName: document.metadata.documentTypeName,\n section: document.metadata.section,\n translationCode: document.metadata.translationCode,\n },\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n )\n )\n );\n }\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n let type = file.type;\n if (file.type.trim().length === 0 && file.name.endsWith(\".msg\")) {\n type = \"application/vnd.ms-outlook\";\n }\n return decodeFileType(type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onDocumentConfirm = (note: Option) =>\n pipe(\n confirmDocumentUpload({\n uploadNote: option.isSome(note) ? note.value : \"\",\n }),\n taskEither.mapLeft(\n () => \"GenericError\"\n ),\n taskEither.chain(response =>\n taskEither.fromIOEither(() => mapSubmitNoteStatus(response.status))\n )\n );\n\n const onOptionalDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n checkNewOptionalDocument({\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n );\n }\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n let type = file.type;\n if (file.type.trim().length === 0 && file.name.endsWith(\".msg\")) {\n type = \"application/vnd.ms-outlook\";\n }\n return decodeFileType(type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onOptionalDocumentConfirm = (note: Option) =>\n pipe(\n confirmOptionalDocument({\n uploadNote: option.isSome(note) ? note.value : \"\",\n }),\n taskEither.mapLeft(\n () => \"GenericError\"\n ),\n taskEither.chain(response =>\n taskEither.fromIOEither(() => mapSubmitNoteStatus(response.status))\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n props.refreshList();\n })\n )\n );\n\n const onDocumentCancel = () => {\n return pipe(\n uploadDialogDocument,\n option.map(document =>\n pipe(\n cancelUpload({\n applicationElementID: document.metadata.applicationElementID,\n clientID: document.metadata.clientID,\n documentTypeID: document.metadata.documentTypeID,\n documentTypeName: document.metadata.documentTypeName,\n section: document.metadata.section,\n translationCode: document.metadata.translationCode,\n })()\n )\n )\n );\n };\n\n function getFileSizeMax(): number {\n return 10;\n }\n\n function checkFileSize(fileSize: number) {\n return fileSize < getFileSizeMax() * 1024 * 1024\n ? either.right(undefined)\n : either.left(\"UnsupportedDocumentSize\" as const);\n }\n\n const loadingError = () => (\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n );\n\n const renderNonOptionalSections = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return (\n document.section === section)}\n sectionName={section}\n showMandatoryError={formSubmitted}\n onSelectDocument={document =>\n dispatchWithRejectionCheck(option.some(document))\n }\n onRemoveDocument={docId =>\n pipe(\n removeDocument({ docId }),\n taskEither.map(() => {\n props.refreshList();\n })\n )()\n }\n />\n );\n };\n\n const renderOptionalSection = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return (\n document.section === section)}\n sectionName={section}\n showMandatoryError={formSubmitted}\n onSelectDocument={document =>\n dispatchWithRejectionCheck(option.some(document))\n }\n onRemoveDocument={docId =>\n pipe(\n removeOptionalDocument({ docId }),\n taskEither.map(() => {\n props.refreshList();\n })\n )()\n }\n onAddNewOptionalDocument={() =>\n setUploadNewOptionalDocumentDialog(true)\n }\n />\n );\n };\n\n const renderSendUploadLink = (\n \n \n {[\n formatMessage(\"StandardLoan.UploadDocuments.subTitle\"),\n buttonLink(\n pipe(\n sendLinkToClient(),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n showSentLinkConfirmation(true);\n setIsLinkSent(true);\n })\n )\n ),\n pipe(\n isLinkSent,\n boolean.fold(\n () => formatMessage(\"StandardLoan.UploadDocuments.sendLink\"),\n () => formatMessage(\"StandardLoan.UploadDocuments.resendLink\")\n )\n )\n ),\n ]}\n \n \n );\n\n return (\n \n \n\n {isMobileLayout && }\n\n {sentLinkConfirmation && (\n \n }\n cta={{\n label: formatMessage(\n \"Mortgage.Dashboard.Documents.SendLinkDialog.SendLinkFeedbackDialog.buttonLabel\"\n ),\n action: () => {\n showSentLinkConfirmation(false);\n },\n }}\n />\n )}\n\n \n {!props.isClientFlow && renderSendUploadLink}\n {pipe(\n props.requiredDocuments,\n option.fold(\n () => (\n \n \n \n ),\n documents => (\n \n \n \n \n \n {formatMessage(\n \"StandardLoan.UploadDocuments.Panel.title\"\n )}\n \n {pipe(\n documents,\n extractSectionsFromDocuments,\n option.fold(loadingError, sections => (\n \n {pipe(\n sections,\n array.map(\n section =>\n section != \"OptionalDocuments\" &&\n renderNonOptionalSections(documents, section)\n )\n )}\n \n ))\n )}\n {r6Enabled &&\n renderOptionalSection(documents, \"OptionalDocuments\")}\n \n \n \n\n {formSubmitted &&\n documents.filter(({ docId }) => option.isNone(docId)).length >\n 0 && (\n \n \n \n )}\n\n \n \n option.isNone(docId)),\n emptyDocs => emptyDocs.length === 0,\n boolean.fold(\n () =>\n pipe(\n taskEither.leftIO(() => {\n setFormSubmitted(true);\n })\n ),\n () =>\n taskEither.fromIO(() => submitWithRejectionCheck())\n )\n )}\n />\n \n \n \n )\n )\n )}\n \n {pipe(\n uploadDialogDocument,\n option.map(document => (\n {\n setUploadDialogDocument(option.none);\n props.refreshList();\n }}\n onDocumentUpload={onDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onDocumentConfirm}\n onDocumentCancel={onDocumentCancel}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n docTypeId={document.metadata.documentTypeID}\n applicationElementID={option.some(\n document.metadata.applicationElementID\n )}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n documentName={document.documentName}\n />\n )),\n option.toUndefined\n )}\n {uploadNewOptionalDocumentDialog && (\n {\n setUploadNewOptionalDocumentDialog(false);\n props.refreshList();\n }}\n onDocumentUpload={onOptionalDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onOptionalDocumentConfirm}\n onDocumentCancel={() => pipe(cancelOptionalDocument()())}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n applicationElementID={option.none}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n isNoteMandatory={true}\n />\n )}\n \n );\n}\n\nfunction extractSectionsFromDocuments(\n documents: api.UploadedDocumentData[]\n): Option> {\n const sections: api.SectionType[] = [];\n\n documents.forEach(\n document =>\n !sections.includes(document.section) && sections.push(document.section)\n );\n\n return nonEmptyArray.fromArray(sections);\n}\n","import {\n Box,\n CloseIcon,\n ContentRow,\n Dialog,\n useIsMobileLayout,\n} from \"design-system\";\nimport { boolean, option, readerTaskEither, taskEither } from \"fp-ts\";\nimport { constant, constVoid, flow, pipe } from \"fp-ts/function\";\nimport {\n ExistingClientAuthenticationMethod,\n genericError,\n} from \"../../globalDomain\";\nimport { useCommand } from \"../../useAPI\";\nimport { IdUpload } from \"../../IdUpload/IdUpload\";\nimport * as api from \"../api\";\nimport { useClientExistencyCheck } from \"../../UploadDocuments/clientExistenceUtils\";\nimport * as uploadApi from \"../../IdUpload/api\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { IO } from \"fp-ts/IO\";\nimport { RefuseExistingClientReason, StandardLoanFlowType } from \"../domain\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFlowTypeCases } from \"../useFlowTypeCases\";\nimport { useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useIsInPersonChannel } from \"../../useChannel\";\nimport { useAppContext } from \"../../useAppContext\";\n\ntype Props = {\n onComplete: () => unknown;\n onRefuse: (reason: RefuseExistingClientReason) => void;\n onFailure: (\n reason: \"GenericError\" | \"MaxAttemptsReached\" | \"ValidationError\"\n ) => unknown;\n onBack: IO;\n authenticationMethod: Option;\n flowType: StandardLoanFlowType;\n isThirdParty: boolean;\n};\n\nexport function UploadId(props: Props) {\n const {\n config: { enableThirdPartyBranchSelection },\n } = useAppContext();\n const clientExistenceCommand = useCommand(api.checkClientExisting);\n const formatMessage = useFormatMessage();\n const [isBelow18, setIsBelow18] = useState(false);\n const clientExistenceCheck = useClientExistencyCheck(\n clientExistenceCommand,\n () => genericError\n );\n const openClient = useCommand(api.openClient);\n\n const personalInfoSubmit = useCommand(api.personalInfoSubmit);\n const editData = useCommand(uploadApi.personalInfoEdit);\n const isMobileLayout = useIsMobileLayout();\n\n const {\n isPWSRemote,\n isTLS,\n isTLSorPWSRemoteAndCZ,\n isTLSorPWSRemoteAndSK,\n } = useFlowTypeCases(props.flowType);\n const isInPersonChannel = useIsInPersonChannel();\n const isTLSorPWSremoteExistingClient =\n (isPWSRemote || isTLS) && option.isSome(props.authenticationMethod);\n\n const documentIdentificationFlow = isTLSorPWSremoteExistingClient\n ? \"Primary\"\n : isTLSorPWSRemoteAndCZ\n ? \"PrimaryAndSecondary\"\n : isTLSorPWSRemoteAndSK\n ? \"PrimaryAndLivenessCheck\"\n : \"Primary\";\n\n const extractData = useCommand(api.extractClientData)({\n idType:\n documentIdentificationFlow === \"PrimaryAndSecondary\"\n ? option.none\n : option.some(\"Primary\"),\n coApplicant: option.none,\n });\n\n const rejectData = useCommand(uploadApi.rejectData)({\n idType:\n documentIdentificationFlow === \"PrimaryAndSecondary\"\n ? option.none\n : option.some(\"Primary\"),\n coApplicant: option.none,\n });\n\n const checkBelow18 = (dateOfBirth: Date) => {\n const age = new Date().getFullYear() - dateOfBirth.getFullYear();\n\n return age < 18;\n };\n\n return (\n \n genericError),\n taskEither.chain(clientData =>\n pipe(\n clientData.clientExistencyCheckData.dateOfBirth,\n checkBelow18,\n boolean.fold(\n () =>\n !clientData.clientExists && clientData.personalNumberMatch\n ? taskEither.fromIO(() =>\n props.onRefuse(\"IsPersonalNumberMatch\")\n )\n : pipe(\n clientData.clientExists,\n boolean.fold(\n () =>\n pipe(\n openClient(),\n taskEither.mapLeft(constant(genericError)),\n taskEither.chain(() =>\n taskEither.fromIO(() => props.onComplete())\n )\n ),\n () =>\n taskEither.fromIO(() => {\n if (props.isThirdParty) {\n return props.onComplete();\n }\n return pipe(\n clientData.userID,\n option.fold(\n () =>\n props.onRefuse(\n clientData.multipleUsers\n ? \"IsMultipleUser\"\n : \"IsExisting\"\n ),\n () => props.onRefuse(\"HasUserId\")\n )\n );\n })\n )\n ),\n () => taskEither.fromIO(() => setIsBelow18(true))\n )\n )\n )\n )}\n onFailure={props.onFailure}\n onShouldClientContinue={option.none}\n documentIdentificationFlow={documentIdentificationFlow}\n extractData={extractData}\n clientExistencyCommand={clientExistenceCommand}\n rejectData={rejectData}\n submitConfirmedDataCommand={confirmedData =>\n pipe({ idType: confirmedData.idType }, personalInfoSubmit)\n }\n documentsMismatch={false}\n onMismatchDialogDismiss={constVoid}\n showMismatchDialog={constVoid}\n onReset={constVoid}\n isThirdParty={props.isThirdParty}\n checkOpuAndCex={!props.isThirdParty && !isTLS && isInPersonChannel}\n editPersonalInfoCommand={editData}\n submitResidencyCommand={readerTaskEither.fromIO(constVoid)}\n showBranchSelection={\n props.isThirdParty && enableThirdPartyBranchSelection\n }\n />\n \n \n \n \n \n {isBelow18 && (\n \n )}\n \n );\n}\n","import { Body, LocalizedString, Stack } from \"design-system\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport * as api from \"../api\";\nimport { UploadDocumentItem } from \"./UploadDocumentItem\";\nimport { option } from \"fp-ts\";\nimport { DocumentNote } from \"./DocumentNote\";\n\ntype Props = {\n subSection: api.UploadedDocumentData[];\n subSectionName: LocalizedString;\n showMandatoryError: boolean;\n onSelectDocument: (document: api.UploadedDocumentData) => void;\n onRemoveDocument: (docId: NonEmptyString) => void;\n};\n\nexport function UploadDocumentsSubsection(props: Props) {\n const renderDocumentItemAndNote = (document: api.UploadedDocumentData) => {\n return (\n <>\n props.onSelectDocument(document)}\n onRemoveItem={props.onRemoveDocument}\n />\n {option.isSome(document.uploadNote) &&\n document.uploadNote.value.length > 0 && (\n \n )}\n \n );\n };\n\n return (\n \n \n {props.subSectionName}\n \n\n \n {props.subSection.map(document => renderDocumentItemAndNote(document))}\n \n \n );\n}\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./UploadDocumentItem.treat.1tTZTFm.css\";\nexport var button = '_2Kyl7';","import {\n Banner,\n Body,\n Box,\n buttonLink,\n Card,\n ContentRow,\n ErrorBanner,\n FileContent,\n Heading,\n Loader,\n LoadingButton,\n Stack,\n useIsMobileLayout,\n Space,\n FeedbackDialog,\n} from \"design-system\";\nimport { constVoid, pipe, constTrue, constFalse } from \"fp-ts/function\";\nimport * as api from \"../api\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand, usePollingEffect, useQuery } from \"../../useAPI\";\nimport { UploadDocumentsSection } from \"./UploadDocumentsSection\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport {\n nonEmptyArray,\n option,\n array,\n taskEither,\n boolean,\n either,\n} from \"fp-ts\";\nimport * as uploadDocumentsApi from \"./api\";\nimport { useMemo, useState } from \"react\";\nimport {\n decodeFileType,\n encodeFileToBase64,\n fileTypes,\n mapSubmitDocumentStatus,\n mapSubmitNoteStatus,\n} from \"../../MortgageDashboard/Documents/domain\";\nimport { selectedMainApplicant } from \"../../MortgageDashboard/mortgageDashboardUtils\";\nimport { Option } from \"fp-ts/Option\";\nimport { DocumentMime } from \"../../Common/documentAPI\";\nimport { UUID } from \"io-ts-types/lib/UUID\";\nimport { StandardLoanDocumentUploadDialog } from \"./StandardLoanDocumentUploadDialog\";\nimport { UploadDocumentFlowType } from \"../../globalDomain\";\nimport * as remoteData from \"../../RemoteData\";\nimport { OptionalDocumentUploadDialog } from \"./OptionalDocumentUploadDialog\";\nimport { OptionalDocumentsSection } from \"./OptionalDocumentsSection\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { NewRequiredDocumentsSection } from \"./NewRequiredDocumentsSection\";\nimport { DocumentNoteUploadError } from \"../../Common/Dialogs/DocumentUploadDialog/domain\";\nimport { ReworkBanner } from \"../Rework/ReworkBanner\";\nimport * as reworkApi from \"../Rework/api\";\nimport { useRemoteData } from \"../../useRemoteData\";\nimport { StepCommentsOutput } from \"../Rework/api\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n isClientFlow: boolean;\n bankerFlowId: Option;\n onNext: TaskEither;\n productType: Option;\n requiredDocumentsUpToDate: boolean;\n};\n\nexport function UploadDocumentsRework(props: Props) {\n return pipe(\n props.requiredDocumentsUpToDate,\n boolean.fold(\n () => ,\n () => \n )\n );\n}\n\nfunction RefreshDocumentsWithAppState(props: Props) {\n const [appStateRequiredDocuments] = useQuery(api.appStateRequiredDocuments);\n\n return pipe(\n appStateRequiredDocuments,\n remoteData.fold(\n () => ,\n () => ,\n () => {\n return ;\n }\n )\n );\n}\n\nfunction getLoading() {\n const loading = (\n \n \n \n );\n\n return loading;\n}\n\nfunction LoadingError() {\n const formatMessage = useFormatMessage();\n\n const loadingError = (\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n );\n return loadingError;\n}\n\nfunction LoadingWrapped() {\n const formatMessage = useFormatMessage();\n return (\n \n \n {getLoading()}\n \n );\n}\n\nfunction RefreshDocumentsWithCheckIfReady(props: Props) {\n const [documentsRefreshed, setDocumentsRefreshed] = useState(false);\n const [showError, setShowError] = useState(false);\n\n usePollingEffect(api.checkRequiredDocuments, {\n intervalMS: 1000,\n disabled: false,\n shouldPollingContinue: ({ requiredDocumentsReceived }) =>\n !requiredDocumentsReceived,\n onSuccess: ({ requiredDocumentsReceived }) =>\n requiredDocumentsReceived && setDocumentsRefreshed(true),\n onError: () => {\n setShowError(true);\n },\n });\n\n return showError ? (\n \n ) : documentsRefreshed ? (\n \n ) : (\n \n );\n}\n\nfunction UploadDocuments(props: Props) {\n const formatMessage = useFormatMessage();\n const [requiredDocuments, refreshList] = useQuery(api.requiredDocuments);\n const [formSubmitted, setFormSubmitted] = useState(false);\n const isMobileLayout = useIsMobileLayout();\n const confirmUpload = useCommand(uploadDocumentsApi.confirmUpload);\n const removeDocument = useCommand(\n props.isClientFlow ? api.removeDocumentByClient : api.removeDocument\n );\n const cancelUpload = useCommand(\n props.isClientFlow ? api.cancelUploadByClient : api.cancelUpload\n );\n const uploadDocument = useCommand(\n props.isClientFlow ? api.uploadDocumentByClient : api.uploadDocument\n );\n const confirmDocumentUpload = useCommand(\n props.isClientFlow ? api.confirmDocumentByClient : api.confirmDocument\n );\n const checkNewRequiredDocument = useCommand(\n props.isClientFlow\n ? api.checkNewRequiredDocumentByClient\n : api.checkNewRequiredDocument\n );\n const confirmNewRequiredDocument = useCommand(\n props.isClientFlow\n ? api.confirmNewRequiredDocumentUploadByClient\n : api.confirmNewRequiredDocumentUpload\n );\n const checkNewOptionalDocument = useCommand(\n props.isClientFlow\n ? api.checkNewOptionalDocumentByClient\n : api.checkNewOptionalDocument\n );\n const checkOptionalDocument = useCommand(\n props.isClientFlow\n ? api.checkOptionalDocumentByClient\n : api.checkOptionalDocument\n );\n const confirmOptionalDocument = useCommand(\n props.isClientFlow\n ? api.confirmOptionalDocumentUploadByClient\n : api.confirmOptionalDocumentUpload\n );\n const cancelOptionalDocument = useCommand(\n props.isClientFlow\n ? api.cancelOptionalDocUploadByClient\n : api.cancelOptionalDocUpload\n );\n const removeOptionalDocument = useCommand(\n props.isClientFlow ? api.removeOptionalDocByClient : api.removeOptionalDoc\n );\n const cancelNewRequiredDocument = useCommand(\n props.isClientFlow\n ? api.cancelNewRequiredDocUploadByClient\n : api.cancelNewRequiredDocUpload\n );\n const removeNewRequiredDocument = useCommand(\n props.isClientFlow\n ? api.removeNewRequiredDocByClient\n : api.removeNewRequiredDoc\n );\n\n const sendLinkToClient = useCommand(api.sendLinkToClient);\n const [isLinkSent, setIsLinkSent] = useState(false);\n const [sentLinkConfirmation, showSentLinkConfirmation] = useState(\n false\n );\n const [uploadDialogDocument, setUploadDialogDocument] = useState<\n Option\n >(option.none);\n const [\n uploadNewOptionalDocumentDialog,\n setUploadNewOptionalDocumentDialog,\n ] = useState(false);\n\n const [\n uploadOptionalDocumentDialog,\n setUploadOptionalDocumentDialog,\n ] = useState>(option.none);\n\n const [\n uploadNewRequiredDocumentDialog,\n setUploadNewRequiredDocumentDialog,\n ] = useState>(option.none);\n\n const {\n config: { r6Enabled },\n } = useAppContext();\n\n // const r6Enabled = true;\n\n usePollingEffect(api.checkUploadChanges, {\n intervalMS: 3000,\n disabled:\n props.isClientFlow &&\n pipe(\n requiredDocuments,\n remoteData.toOption,\n option.fold(constFalse, constTrue)\n ),\n shouldPollingContinue: constTrue,\n onError: constVoid,\n onSuccess: (result: api.CheckUploadChangesOutput) => {\n if (result.uploadChanges && option.isNone(uploadDialogDocument)) {\n refreshList();\n }\n\n if (result.uploadConfirmed) {\n props.onNext();\n }\n },\n });\n\n const onDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n uploadDialogDocument,\n option.fold(\n () => taskEither.left(\"GenericError\" as const),\n document =>\n pipe(\n uploadDocument({\n requiredDocumentMetadata: {\n applicationElementID: document.metadata.applicationElementID,\n clientID: document.metadata.clientID,\n documentTypeID: document.metadata.documentTypeID,\n documentTypeName: document.metadata.documentTypeName,\n section: document.metadata.section,\n translationCode: document.metadata.translationCode,\n },\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n )\n )\n );\n }\n\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n return decodeFileType(file.type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onDocumentConfirm = (note: Option) =>\n pipe(\n confirmDocumentUpload({\n uploadNote: option.isSome(note) ? note.value : \"\",\n }),\n taskEither.mapLeft(\n () => \"GenericError\"\n ),\n taskEither.chain(response =>\n taskEither.fromIOEither(() => mapSubmitNoteStatus(response.status))\n )\n );\n\n const onNewRequiredDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n uploadNewRequiredDocumentDialog,\n option.fold(\n () => taskEither.left(\"GenericError\" as const),\n document =>\n pipe(\n checkNewRequiredDocument({\n documentTypeId: document.metadata.documentTypeID,\n translationCode: document.metadata.translationCode,\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n uniqueLfId: option.isSome(document.uniqueLfId)\n ? document.uniqueLfId.value\n : \"\",\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n )\n )\n );\n }\n\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n return decodeFileType(file.type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onOptionalDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n uploadOptionalDocumentDialog,\n option.fold(\n () => taskEither.left(\"GenericError\" as const),\n document =>\n pipe(\n checkOptionalDocument({\n documentTypeId: document.metadata.documentTypeID,\n oldDocId: option.isSome(document.oldDocId)\n ? document.oldDocId.value\n : \"\",\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n )\n )\n );\n }\n\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n return decodeFileType(file.type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onNewOptionalDocumentUpload = (file: File) => {\n function submit(fileContent: FileContent, fileType: DocumentMime) {\n return pipe(\n checkNewOptionalDocument({\n documentContent: fileContent,\n filename: file.name,\n mimeType: fileType,\n }),\n taskEither.mapLeft(() => \"GenericError\" as const)\n );\n }\n return pipe(\n checkFileSize(file.size),\n either.chainW(() => {\n return decodeFileType(file.type);\n }),\n taskEither.fromEither,\n taskEither.chainW(fileType =>\n pipe(\n encodeFileToBase64(file),\n taskEither.map(fileBase64 => ({ fileType, fileBase64 }))\n )\n ),\n taskEither.chainW(scope =>\n pipe(\n submit(scope.fileBase64, scope.fileType),\n taskEither.map(submitResult => ({ ...scope, ...submitResult }))\n )\n ),\n taskEither.chainW(scope =>\n taskEither.fromIOEither(() =>\n pipe(\n mapSubmitDocumentStatus(scope.status),\n either.map(() => scope)\n )\n )\n )\n );\n };\n\n const onOptionalDocumentConfirm = (note: Option) =>\n pipe(\n confirmOptionalDocument({\n uploadNote: option.isSome(note) ? note.value : \"\",\n }),\n taskEither.mapLeft(\n () => \"GenericError\"\n ),\n taskEither.chain(response =>\n taskEither.fromIOEither(() => mapSubmitNoteStatus(response.status))\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n refreshList();\n })\n )\n );\n\n const onNewRequiredDocumentConfirm = (note: Option) =>\n pipe(\n confirmNewRequiredDocument({\n uploadNote: option.isSome(note) ? note.value : \"\",\n }),\n taskEither.mapLeft(\n () => \"GenericError\"\n ),\n taskEither.chain(response =>\n taskEither.fromIOEither(() => mapSubmitNoteStatus(response.status))\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n refreshList();\n })\n )\n );\n\n const onDocumentCancel = () => {\n pipe(\n uploadDialogDocument,\n option.map(document =>\n pipe(\n cancelUpload({\n applicationElementID: document.metadata.applicationElementID,\n clientID: document.metadata.clientID,\n documentTypeID: document.metadata.documentTypeID,\n documentTypeName: document.metadata.documentTypeName,\n section: document.metadata.section,\n translationCode: document.metadata.translationCode,\n })()\n )\n )\n );\n };\n\n const renderRequiredDocuments = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return (\n document.section === section)}\n sectionName={section}\n showMandatoryError={formSubmitted}\n onSelectDocument={document =>\n setUploadDialogDocument(option.some(document))\n }\n onRemoveDocument={docId =>\n pipe(\n removeDocument({ docId }),\n taskEither.map(() => {\n refreshList();\n })\n )()\n }\n />\n );\n };\n\n const renderOptionalSection = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return (\n document.section === section)}\n sectionName={section}\n showMandatoryError={formSubmitted}\n onSelectDocument={document =>\n setUploadOptionalDocumentDialog(option.some(document))\n }\n onRemoveDocument={docId =>\n pipe(\n removeOptionalDocument({ docId }),\n taskEither.map(() => {\n refreshList();\n })\n )()\n }\n onAddNewOptionalDocument={() =>\n setUploadNewOptionalDocumentDialog(true)\n }\n />\n );\n };\n\n const getDocumentsBySection = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return documents.filter(document => document.section === section);\n };\n\n const renderNewRequiredDocumentsSection = (\n documents: api.UploadedDocumentData[],\n section: api.SectionType\n ) => {\n return (\n document.section === section)}\n sectionName={section}\n showMandatoryError={formSubmitted}\n onSelectDocument={document =>\n setUploadNewRequiredDocumentDialog(option.some(document))\n }\n onRemoveDocument={docId =>\n pipe(\n removeNewRequiredDocument({ docId }),\n taskEither.map(() => {\n refreshList();\n })\n )()\n }\n />\n );\n };\n\n const renderSendUploadLink = (\n \n \n {[\n formatMessage(\"StandardLoan.UploadDocuments.subTitle\"),\n buttonLink(\n pipe(\n sendLinkToClient(),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n showSentLinkConfirmation(true);\n setIsLinkSent(true);\n })\n )\n ),\n pipe(\n isLinkSent,\n boolean.fold(\n () => formatMessage(\"StandardLoan.UploadDocuments.sendLink\"),\n () => formatMessage(\"StandardLoan.UploadDocuments.resendLink\")\n )\n )\n ),\n ]}\n \n \n );\n\n function getFileSizeMax(): number {\n return 10;\n }\n\n function checkFileSize(fileSize: number) {\n return fileSize < getFileSizeMax() * 1024 * 1024\n ? either.right(undefined)\n : either.left(\"UnsupportedDocumentSize\" as const);\n }\n\n const loadingError = () => (\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n );\n\n const stepComments = useCommand(reworkApi.stepComments);\n\n const comments = useRemoteData(\n useMemo(() => stepComments({ reworkCategories: [\"DOCUMENT\"] }), [r6Enabled])\n );\n\n const reworkComments = pipe(\n comments,\n remoteData.fold(\n () => option.none,\n () => option.none,\n comments => option.some(comments)\n )\n );\n\n const areReworkComments =\n option.isSome(reworkComments) &&\n option.isSome(reworkComments.value.stepComments) &&\n reworkComments.value.stepComments.value.length > 0;\n\n const reworkBanner = (comments: Option) => {\n return (\n \n \n \n );\n };\n\n return (\n \n \n\n {isMobileLayout && }\n\n {sentLinkConfirmation && (\n \n }\n cta={{\n label: formatMessage(\n \"Mortgage.Dashboard.Documents.SendLinkDialog.SendLinkFeedbackDialog.buttonLabel\"\n ),\n action: () => {\n showSentLinkConfirmation(false);\n },\n }}\n />\n )}\n \n {!props.isClientFlow && renderSendUploadLink}\n {pipe(\n pipe(\n requiredDocuments,\n remoteData.toOption,\n option.fold(\n () => option.none,\n documents => option.some(documents)\n )\n /*option.map(documents => documents)*/\n ),\n option.fold(\n () => (\n \n \n \n ),\n documents =>\n documents.length === 0 ? (\n props.onNext() && null\n ) : (\n \n {r6Enabled &&\n areReworkComments &&\n reworkBanner(reworkComments)}\n \n \n \n \n {formatMessage(\n \"StandardLoan.UploadDocuments.Panel.title\"\n )}\n \n {pipe(\n documents,\n extractSectionsFromDocuments,\n option.fold(loadingError, sections => (\n \n {pipe(\n sections,\n array.map(\n section =>\n section !== \"OptionalDocuments\" &&\n section !== \"NewRequiredDocuments\" &&\n renderRequiredDocuments(documents, section)\n )\n )}\n \n ))\n )}\n {r6Enabled &&\n getDocumentsBySection(\n documents,\n \"NewRequiredDocuments\"\n ).length > 0 &&\n renderNewRequiredDocumentsSection(\n documents,\n \"NewRequiredDocuments\"\n )}\n {r6Enabled &&\n renderOptionalSection(documents, \"OptionalDocuments\")}\n \n \n \n\n {formSubmitted &&\n documents.filter(({ docId }) => option.isNone(docId))\n .length > 0 && (\n \n \n \n )}\n\n \n \n option.isNone(docId)),\n emptyDocs => emptyDocs.length === 0,\n boolean.fold(\n () =>\n pipe(\n taskEither.leftIO(() => {\n setFormSubmitted(true);\n })\n ),\n () =>\n pipe(\n confirmUpload(),\n taskEither.chain(() => props.onNext)\n )\n )\n )}\n />\n \n \n \n )\n )\n )}\n \n {pipe(\n uploadDialogDocument,\n option.map(document => (\n {\n setUploadDialogDocument(option.none);\n refreshList();\n }}\n onDocumentUpload={onDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onDocumentConfirm}\n onDocumentCancel={onDocumentCancel}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n docTypeId={document.metadata.documentTypeID}\n applicationElementID={option.some(\n document.metadata.applicationElementID\n )}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n documentName={document.documentName}\n />\n )),\n option.toUndefined\n )}\n {pipe(\n uploadNewRequiredDocumentDialog,\n option.map(document => (\n {\n setUploadNewRequiredDocumentDialog(option.none);\n refreshList();\n }}\n onDocumentUpload={onNewRequiredDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onNewRequiredDocumentConfirm}\n onDocumentCancel={() => pipe(cancelNewRequiredDocument()())}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n applicationElementID={option.none}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n documentName={document.documentName}\n />\n )),\n option.toUndefined\n )}\n {pipe(\n uploadOptionalDocumentDialog,\n option.map(document => (\n {\n setUploadOptionalDocumentDialog(option.none);\n refreshList();\n }}\n onDocumentUpload={onOptionalDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onOptionalDocumentConfirm}\n onDocumentCancel={() => pipe(cancelOptionalDocument()())}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n applicationElementID={option.none}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n documentName={document.documentName}\n />\n )),\n option.toUndefined\n )}\n\n {uploadNewOptionalDocumentDialog && (\n {\n setUploadNewOptionalDocumentDialog(false);\n refreshList();\n }}\n onDocumentUpload={onNewOptionalDocumentUpload}\n maxLengthNote={option.none}\n onDocumentConfirm={onOptionalDocumentConfirm}\n onDocumentCancel={() => pipe(cancelOptionalDocument()())}\n selectedApplicant={selectedMainApplicant}\n skipNotes={false}\n acceptableFileTypes={fileTypes}\n applicationElementID={option.none}\n fileSizeMax={getFileSizeMax()}\n productType={props.productType}\n />\n )}\n \n );\n}\n\nfunction extractSectionsFromDocuments(\n documents: api.UploadedDocumentData[]\n): Option> {\n const sections: api.SectionType[] = [];\n\n documents.forEach(\n document =>\n !sections.includes(document.section) && sections.push(document.section)\n );\n\n return nonEmptyArray.fromArray(sections);\n}\n","import { Heading, Stack } from \"design-system\";\nimport * as api from \"../api\";\nimport { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { UploadDocumentItem } from \"./UploadDocumentItem\";\nimport { option } from \"fp-ts\";\nimport { DocumentNote } from \"./DocumentNote\";\n\ntype Props = {\n section: api.UploadedDocumentData[];\n sectionName: api.SectionType;\n showMandatoryError: boolean;\n onSelectDocument: (document: api.UploadedDocumentData) => void;\n onRemoveDocument: (docId: NonEmptyString) => void;\n};\n\nexport function NewRequiredDocumentsSection(props: Props) {\n const formatMessage = useFormatMessage();\n\n const renderDocumentItemAndNote = (document: api.UploadedDocumentData) => {\n return (\n <>\n props.onSelectDocument(document)}\n onRemoveItem={props.onRemoveDocument}\n />\n {option.isSome(document.uploadNote) &&\n document.uploadNote.value.length > 0 && (\n \n )}\n \n );\n };\n\n return (\n \n \n {formatMessage(getSectionLabel(props.sectionName))}\n \n \n {props.section.map(document => renderDocumentItemAndNote(document))}\n \n \n );\n}\n\nfunction getSectionLabel(section: api.SectionType): LocaleKey {\n switch (section) {\n case \"MainIncome\":\n return \"StandardLoan.UploadDocuments.MainIncome.title\";\n case \"AdditionalIncome\":\n return \"StandardLoan.UploadDocuments.AdditionalIncome.title\";\n case \"Refinancing\":\n return \"StandardLoan.UploadDocuments.Refinancing.title\";\n case \"OptionalDocuments\":\n return \"StandardLoan.UploadDocuments.OptionalDocuments.title\";\n case \"NewRequiredDocuments\":\n return \"StandardLoan.UploadDocuments.NewRequiredDocuments.title\";\n }\n}\n","import { IO } from \"fp-ts/IO\";\nimport { pipe, constFalse } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../globalDomain\";\nimport { option } from \"fp-ts\";\nimport { UserValidation } from \"../Common/UserValidation/UserValidation\";\nimport { useFormatMessage } from \"../intl\";\n\ninterface Props {\n onExit: Option>;\n authenticationMethod: Option;\n children: JSX.Element | null;\n skipValidation?: boolean;\n}\n\nexport function UserValidationWrapper(props: Props) {\n const formatMessage = useFormatMessage();\n\n return pipe(\n props.authenticationMethod,\n option.fold(\n () => <>{props.children},\n authMethod => (\n \n pipe(\n props.authenticationMethod,\n option.fold(constFalse, () => {\n const hasSecurityDetails =\n details.hasEmailAddress && details.hasPhoneNumber;\n\n if (authMethod === \"ID\") {\n return hasSecurityDetails && details.isPhoneNumberVerified;\n } else {\n return hasSecurityDetails;\n }\n })\n )\n }\n >\n {props.children}\n \n )\n )\n );\n}\n","import { Option } from \"fp-ts/Option\";\nimport {\n ComponentProps,\n Dispatch,\n useEffect,\n useState,\n SetStateAction,\n} from \"react\";\nimport { LocalizedString } from \"design-system\";\nimport { option, array } from \"fp-ts\";\nimport * as zipper from \"fp-ts-contrib/Zipper\";\nimport {\n accountsForRefinancingAction,\n goToStepAction,\n State,\n Action,\n} from \"./StandardLoanState\";\nimport { useFormatMessage } from \"../intl\";\nimport { useFlowTypeCases } from \"./useFlowTypeCases\";\nimport { StandardLoanFlowType } from \"./domain\";\nimport { identity, pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Stepper } from \"../Common/MainContent/Stepper\";\nimport { useAppContext } from \"../useAppContext\";\n\ntype Props = {\n flowType: StandardLoanFlowType;\n state: State;\n dispatch: Dispatch;\n stepVisibility: Option>;\n isRework: boolean;\n isExistingClient: boolean;\n};\n\ninterface StepDefinition {\n name: State[\"type\"];\n action: () => void;\n label: LocalizedString;\n visible: boolean;\n}\n\nexport const useSteps = (props: Props) => {\n const formatMessage = useFormatMessage();\n const { isPWSRemote, isTLSorPWSRemoteAndCZ } = useFlowTypeCases(\n props.flowType\n );\n\n const {\n config: { enableVirtualCardsLoanImpl },\n } = useAppContext();\n\n const defaultFixedStepDefinition: StepDefinition[] = [\n {\n name: \"PersonalData\",\n action: () => props.dispatch(goToStepAction(\"PersonalData\")),\n label: formatMessage(\"Identification.personalData.personalData\"),\n visible: props.isRework,\n },\n {\n name: \"PhoneAndEmailVerification\",\n action: () => props.dispatch(goToStepAction(\"VerifyPhoneAndEmail\")),\n label: formatMessage(\"StandardLoan.Steps.step1\"),\n visible: true,\n },\n {\n name: \"UploadID\",\n action: () => props.dispatch(goToStepAction(\"UploadID\")),\n label: formatMessage(\"StandardLoan.Steps.step2\"),\n visible: true,\n },\n {\n name: \"CreditChecks\",\n action: () => props.dispatch(goToStepAction(\"CreditChecks\")),\n label: formatMessage(\"StandardLoan.Steps.step3\"),\n visible: true,\n },\n {\n name: \"CustomerOffer\",\n action: () => props.dispatch(goToStepAction(\"CustomerOffer\")),\n label: formatMessage(\"StandardLoan.Steps.step4\"),\n visible: true,\n },\n {\n name: \"ExpensesAndAdditionalIncome\",\n action: () =>\n props.dispatch(goToStepAction(\"ExpensesAndAdditionalIncome\")),\n label: formatMessage(\"StandardLoan.Steps.step5\"),\n visible: true,\n },\n {\n name: \"OfferList\",\n action: () => props.dispatch(goToStepAction(\"OfferList\")),\n label: formatMessage(\"StandardLoan.Steps.step6\"),\n visible: true,\n },\n {\n name: \"OfferReview\",\n action: () => {\n switch (props.state.type) {\n case \"Loading\":\n case \"Landing\":\n case \"PhoneAndEmailVerification\":\n case \"UploadID\":\n case \"CreditChecks\":\n case \"ExistingClient\":\n case \"ExistingApplication3PError\":\n case \"RestoreApplication\":\n case \"CustomerOffer\":\n case \"AccountsForRefinancing\":\n case \"Rejected\":\n case \"Summary\":\n case \"UploadDocuments\":\n return;\n case \"ExpensesAndAdditionalIncome\":\n case \"OfferList\":\n case \"OfferReview\":\n case \"KYC\":\n case \"Micropayment\":\n case \"FollowUpAndSignature\":\n if (props.state.payload.hasRefinancingCredits) {\n props.dispatch(accountsForRefinancingAction(true));\n }\n return;\n }\n },\n label: formatMessage(\"StandardLoan.Steps.step7\"),\n visible: true,\n },\n {\n name: \"PackageSelection\",\n action: () => props.dispatch(goToStepAction(\"PackageSelection\")),\n label: formatMessage(\"StandardLoan.Steps.step7.1\"),\n visible: enableVirtualCardsLoanImpl && !props.isExistingClient,\n },\n {\n name: \"VirtualCard\",\n action: () => props.dispatch(goToStepAction(\"VirtualCard\")),\n label: formatMessage(\"StandardLoan.Steps.step7.2\"),\n visible: enableVirtualCardsLoanImpl && !props.isExistingClient,\n },\n {\n name: \"AccountsForRefinancing\",\n action: () => props.dispatch(goToStepAction(\"AccountsForRefinancing\")),\n label: formatMessage(\"StandardLoan.Steps.step8\"),\n visible: false,\n },\n {\n name: \"RepaidLoans\",\n action: () => props.dispatch(goToStepAction(\"RepaidLoans\")),\n label: formatMessage(\"StandardLoan.Steps.step8.1\"),\n visible: false,\n },\n {\n name: \"KYC\",\n action: () => props.dispatch(goToStepAction(\"KYC\")),\n label: formatMessage(\"StandardLoan.Steps.step9\"),\n visible: true,\n },\n {\n name: \"Micropayment\",\n action: () => props.dispatch(goToStepAction(\"Micropayment\")),\n label: formatMessage(\"StandardLoan.Steps.step9.1\"),\n visible: isTLSorPWSRemoteAndCZ,\n },\n ];\n const defaultNonFixedStepDefinition: StepDefinition[] = pipe<\n StepDefinition[],\n StepDefinition[]\n >(\n [\n {\n name: \"FollowUpAndSignature\",\n action: () => props.dispatch(goToStepAction(\"FollowUpAndSignature\")),\n label: formatMessage(\"StandardLoan.Steps.step12\"),\n visible: true,\n },\n {\n name: \"UploadDocuments\",\n action: () => props.dispatch(goToStepAction(\"UploadDocuments\")),\n label: formatMessage(\"StandardLoan.Steps.step11\"),\n visible: isTLSorPWSRemoteAndCZ || isPWSRemote,\n },\n ],\n props.isRework ? array.reverse : identity\n );\n\n const [stepsDefinition, setStepDefinition] = useState([\n ...defaultFixedStepDefinition,\n ...defaultNonFixedStepDefinition,\n ]);\n\n useEffect(() => {\n const setStepVisibility = (\n stepName: State[\"type\"],\n visibility: boolean,\n stepsDefinition: StepDefinition[]\n ) =>\n stepsDefinition.map(step =>\n step.name === stepName ? { ...step, visible: visibility } : step\n );\n\n const foldStepDefinition = () => {\n switch (props.state.type) {\n case \"OfferReview\":\n case \"AccountsForRefinancing\":\n case \"KYC\":\n return setStepVisibility(\n \"AccountsForRefinancing\",\n props.state.payload.hasRefinancingCredits,\n stepsDefinition\n );\n case \"FollowUpAndSignature\":\n const foldDefinition = setStepVisibility(\n \"AccountsForRefinancing\",\n props.state.payload.hasRefinancingCredits,\n stepsDefinition\n );\n return setStepVisibility(\n \"KYC\",\n props.state.payload.isKycNeeded,\n foldDefinition\n );\n case \"RepaidLoans\":\n return setStepVisibility(\"RepaidLoans\", true, stepsDefinition);\n default:\n return stepsDefinition;\n }\n };\n\n const stepDefinitionByVisibilityArray = (\n stepVisibility: NonEmptyArray\n ): StepDefinition[] =>\n stepsDefinition.map(step => ({\n ...step,\n visible: stepVisibility.includes(step.name),\n }));\n\n pipe(\n props.stepVisibility,\n option.fold(\n () => setStepDefinition(foldStepDefinition()),\n steps => setStepDefinition(stepDefinitionByVisibilityArray(steps))\n )\n );\n }, [props.state.type]);\n\n function getSteps(): Option[\"steps\"]> {\n function makeZipper(\n currentStepName: State[\"type\"]\n ): ComponentProps[\"steps\"] {\n const visibleSteps = stepsDefinition.filter(step => step.visible);\n const currentStepIndex = visibleSteps.findIndex(\n step => step.name === currentStepName\n );\n const steps = visibleSteps.map(step => step.label);\n return zipper.make(\n currentStepIndex > 0 ? steps.slice(0, currentStepIndex) : [],\n steps[currentStepIndex],\n steps.slice(currentStepIndex + 1)\n );\n }\n\n const currentStepOrEquivalent =\n props.state.type === \"CheckExpensesOffers\" ||\n props.state.type === \"SendAdditionalIncome\"\n ? \"ExpensesAndAdditionalIncome\"\n : props.state.type;\n\n return pipe(\n stepsDefinition,\n array.findFirst(\n step => step.visible && step.name === currentStepOrEquivalent\n ),\n option.map(({ name }) => makeZipper(name))\n );\n }\n\n const goToStep = (\n stepIndex: number\n ): Dispatch> | void =>\n stepsDefinition.filter(step => step.visible)[stepIndex].action();\n\n return { getSteps, goToStep };\n};\n","import { useEffect, useState } from \"react\";\nimport { option, taskEither } from \"fp-ts\";\nimport moment from \"moment\";\nimport { getCoreCalendar } from \"./api\";\nimport { useCommand } from \"../useAPI\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\n\ntype Status = \"Loading\" | \"Ready\";\ntype DayType = \"Working\" | \"NonWorking\" | \"None\";\nexport type DayTypeInfo = {\n status: Status;\n dayType: Option;\n isWorkingDay: boolean;\n};\n\nexport const useCheckDay = () => {\n const [dayTypeInfo, setDayTypeInfo] = useState({\n dayType: option.none,\n isWorkingDay: false,\n status: \"Loading\",\n });\n const getCalendar = useCommand(getCoreCalendar);\n\n const checkCurrentDay = () => {\n const today = moment();\n\n const day = parseInt(today.format(\"D\"));\n const month = parseInt(today.format(\"M\"));\n const year = parseInt(today.format(\"YYYY\"));\n\n pipe(\n getCalendar(),\n taskEither.chain(result =>\n taskEither.fromIO(() => {\n const currentMonthInfo = result.find(\n value => value.month === month && value.year === year\n );\n const dayToCheck = currentMonthInfo\n ? parseInt(currentMonthInfo.days[day - 1])\n : 0;\n\n switch (dayToCheck) {\n case 0:\n return setDayTypeInfo({\n dayType: option.some(\"None\"),\n isWorkingDay: false,\n status: \"Ready\",\n });\n case 1:\n return setDayTypeInfo({\n dayType: option.some(\"Working\"),\n isWorkingDay: true,\n status: \"Ready\",\n });\n case 2:\n return setDayTypeInfo({\n dayType: option.some(\"NonWorking\"),\n isWorkingDay: false,\n status: \"Ready\",\n });\n }\n })\n )\n )();\n };\n\n useEffect(() => checkCurrentDay(), []);\n\n function foldStatus(matches: {\n whenLoading: IO;\n whenReady: Reader;\n }) {\n switch (dayTypeInfo.status) {\n case \"Loading\":\n return matches.whenLoading();\n case \"Ready\":\n return matches.whenReady(dayTypeInfo);\n }\n }\n\n return { foldStatus, dayTypeInfo, refresh: checkCurrentDay };\n};\n","import { useCommand } from \"../../useAPI\";\nimport * as uKontoApi from \"../../UKontoFirstPart/UKontoPackagesSelection/api\";\nimport { useEffect, useState } from \"react\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport { option, taskEither } from \"fp-ts\";\nimport { VirtualCardsCommon } from \"../../VirtualCards/VirtualCardsCommon\";\nimport { useAppContext } from \"../../useAppContext\";\n\ntype Props = {\n onSubmit: () => unknown;\n onChange: (data: any) => unknown;\n onBack: () => unknown;\n};\nexport const VirtualCardsSL = (props: Props) => {\n const {\n config: { enableMastercardImpl },\n } = useAppContext();\n const getFeatureWhitelist = useCommand(uKontoApi.getFeatureWhitelist);\n const [mastercardWhitelist, setMastercardWhitelist] = useState(false);\n const showMastercard = enableMastercardImpl || mastercardWhitelist;\n\n useEffect(() => {\n pipe(\n getFeatureWhitelist({ feature: \"enableMastercardImpl\" }),\n taskEither.bimap(constVoid, isMasterCardWhitelisted =>\n setMastercardWhitelist(isMasterCardWhitelisted)\n )\n )();\n }, []);\n\n return (\n \n );\n};\n"],"sourceRoot":""}