{"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/UploadDocuments/UploadDocumentsSection.tsx","StandardLoan/UploadDocuments/StandardLoanDocumentUploadDialog.tsx","StandardLoan/domain.ts","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","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","ExternalLoanItemRework","InternalLoansList","liabilitiesList","InternalLoansListRework","ExternalLoansList","ExternalLoansListRework","AccountsForRefinancingOutput","accountNumber","accountCurrency","internalLoans","externalLoans","getAccountsForRefinancing","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","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","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","packageSelection","virtualCard","accountsForRefinancing","showVirtualCard","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","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","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","UploadDocumentsSection","subSections","found","forEach","push","extractSubSectionsFromSection","getSectionLabel","sectionName","filter","subSectionName","onSelectDocument","onRemoveDocument","StandardLoanDocumentUploadDialog","useQuery","api","docTypeId","remoteData","constNull","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","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","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","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","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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dC,GAEA,MAAO,CACLhb,KAAM,4BACNib,QAAS,CAAED,cAIR,SAASE,EAASF,GACvB,MAAO,CACLhb,KAAM,WACNib,QAAS,CAAED,cAkBR,SAASG,EACdH,EACAI,GAEA,MAAO,CACLpb,KAAM,yBACNib,QAAS,CAAED,YAAWI,0BAgBnB,SAASC,EACdL,EACAM,EACArF,EACAsF,EACA9iB,EACA+iB,GAEA,MAAO,CACLxb,KAAM,eACNib,QAAS,CACPD,YACAM,iBACArF,YACAsF,SACA9iB,wBACA+iB,2BAUC,SAAS3mB,EACd0K,GAEA,MAAO,CAAES,KAAM,iBAAkBT,UAgC5B,SAASkc,EACdR,GAEA,MAAO,CACLjb,KAAM,qBACNib,WAeG,SAASS,EACdV,EACAnF,EACAyF,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,gBACNib,QAAS,CACPD,YACAnF,sBACAyF,iBACAE,yBACAD,WAmBN,SAASI,EACPX,EACAnF,EACApd,EACA6iB,EACAE,EACAI,EACA/G,EACA0G,GAEA,MAAO,CACLvb,KAAM,yBACNib,QAAS,CACPD,YACAviB,wBACAod,sBACAyF,iBACAE,yBACAI,wBACA/G,sBACA0G,WAmBC,SAASM,EACdb,EACAnF,EACApd,EACA6iB,EACAE,EACAI,EACA/G,EACA0G,GAEA,MAAO,CACLvb,KAAM,8BACNib,QAAS,CACPD,YACAviB,wBACAod,sBACAyF,iBACAE,yBACAI,wBACA/G,sBACA0G,WAkBC,SAASO,EACd5tB,EACA8sB,EACAnF,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,4BACNib,QAAS,CACP/sB,YACA8sB,YACAnF,sBACApd,wBACA6iB,iBACAE,yBACAD,WAkBC,SAASQ,EACd7tB,EACA8sB,EACAnF,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,YACNib,QAAS,CACP/sB,YACA8sB,YACAnF,sBACApd,wBACA6iB,iBACAE,yBACAD,WAqFC,SAASS,EACd9tB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,cACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,WAoBC,SAASW,EACdhuB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,EACA5pB,GAEA,MAAO,CACLqO,KAAM,kBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,SACA5pB,wBAmBC,SAASwqB,EACdjuB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,mBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,WAmBC,SAASa,EACdluB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,cACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,WAoBC,SAASc,EACdnuB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,EACAe,GAEA,MAAO,CACLtc,KAAM,yBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,SACAe,oBAsBC,SAASC,EACdruB,EACA8sB,EACAiB,EACApG,EACApd,EACA+iB,EACAF,EACAjd,EACAkd,EACAe,GAEA,MAAO,CACLtc,KAAM,MACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACAxjB,wBACAod,sBACAyF,iBACAE,yBACAnd,mBACAiY,aAAa,EACbiF,SACAe,oBAqBC,SAASE,EACdtuB,EACA8sB,EACAiB,EACApG,EACApd,EACA+iB,EACAF,EACAjd,EACAkd,GAEA,MAAO,CACLvb,KAAM,iBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACAxjB,wBACAod,sBACAyF,iBACAE,yBACAnd,mBACAiY,aAAa,EACbiF,WAuBC,SAASkB,EACdvuB,EACA8sB,EACAiB,EACApG,EACApd,EACA6d,EACAgF,EACAE,EACAD,EACAmB,EACAC,EACAtX,GAEA,MAAO,CACLrF,KAAM,iBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6d,cACAgF,iBACAE,yBACAD,SACAmB,sBACAC,eACAtX,aAmBC,SAASuX,EACd1uB,EACA8sB,EACAiB,EACApG,EACApd,EACA6iB,EACAE,EACAD,GAEA,MAAO,CACLvb,KAAM,eACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6iB,iBACAE,yBACAD,WA8BC,SAASsB,EACd3uB,EACA8sB,EACAiB,EACApG,EACApd,EACA6d,EACAgF,EACAE,EACAD,EACAmB,EACAC,GAEA,MAAO,CACL3c,KAAM,uBACNib,QAAS,CACP/sB,YACA8sB,YACAiB,gBACApG,sBACApd,wBACA6d,cACAgF,iBACAE,yBACAD,SACAmB,sBACAC,iBAyCC,SAAStF,EAASyF,GACvB,MAAO,CACL9c,KAAM,WACNib,QAAS,CAAE6B,oBAaR,SAASC,EACdtrB,EACAurB,EACA3X,GAEA,MAAO,CACLrF,KAAM,UACNib,QAAS,CAAExpB,cAAaurB,iBAAgB3X,aAuBrC,SAAS4X,EAAY1Z,GAC1B,MAAO,CACLvD,KAAM,QACNib,QAAS,CAAE1X,YAgBR,SAAS2Z,EACdzrB,EACAurB,EACA3X,EACA2V,EACAO,EACA4B,GAEA,MAAO,CACLnd,KAAM,kBACNib,QAAS,CACPxpB,cACAurB,iBACA3X,WACA2V,YACAO,SACA4B,8BAqEC,SAASC,EACdxkB,GAIA,OAAOykB,GAASzkB,EAAQykB,EAAMrd,MAAMqd,GAO/B,SAASC,IACd,MAAO,CAAEtd,KAAM,UA4BV,SAASud,EAAeC,GAC7B,MAAO,CAAExd,KAAM,WAAYwd,QAOtB,SAASC,IACd,MAAO,CAAEzd,KAAM,WAOV,SAAS0d,IACd,MAAO,CAAE1d,KAAM,UAUV,SAAS2d,EACd3C,GAEA,MAAO,CAAE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","file":"static/js/index~add2cb7f.8a196ddb.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 },\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 }),\n LoanItem,\n ],\n \"ExternalLoanItem\"\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 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 ExternalLoansListRework = t.type(\n { liabilitiesList: t.array(ExternalLoanItemRework) },\n \"ExternalLoansListRework\"\n);\n\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 RefinancingListLoanItem = t.intersection(\n [\n t.type({\n selectedForRefinance: t.boolean,\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 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 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\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, 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 cpiAdditionalQuestions: Option;\n };\n}\n\nexport function creditChecks(\n loanOffer: LoanOffer,\n initialConsent: Option,\n getIncome: boolean,\n rework: Rework,\n hasRefinancingCredits: boolean,\n cpiAdditionalQuestions: Option\n): CreditChecksState {\n return {\n type: \"CreditChecks\",\n payload: {\n loanOffer,\n initialConsent,\n getIncome,\n rework,\n hasRefinancingCredits,\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 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 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 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 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 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 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 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 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 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 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 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 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 initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function checkExpensesOffers(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: 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 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 initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n };\n}\n\nexport function sendAdditionalIncome(\n loanOffer: LoanOffer,\n personalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: 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 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 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 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 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 initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n disbursementAccount: Option;\n };\n}\n\nexport function offerReviewPush(\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 disbursementAccount: Option\n): OfferReviewPushState {\n return {\n type: \"OfferReviewPush\",\n payload: {\n offerType,\n loanOffer,\n selectedOffer,\n personalDataOptions,\n hasRefinancingCredits,\n initialConsent,\n cpiAdditionalQuestions,\n rework,\n disbursementAccount,\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 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 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 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 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 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 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 initialConsent: StartLoanApplicationInput;\n cpiAdditionalQuestions: Option;\n rework: Rework;\n showVirtualCard?: boolean;\n };\n}\n\nexport function accountsForRefinancing(\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): AccountsForRefinancingState {\n return {\n type: \"AccountsForRefinancing\",\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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 lfStatus: Option;\n loanOffer: LoanOffer;\n rework: Rework;\n requiredDocumentsUpToDate?: boolean;\n };\n}\n\nexport function uploadDocuments(\n productType: Option,\n hasRefinancing: 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 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 | 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 | \"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 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): ExpensesAndAdditionalIncomeAction {\n return {\n type: \"ExpensesAndAdditionalIncome\",\n payload: {\n hasRefinancingCredits,\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 needsAdditionalIncome: Option;\n hasAdditionalIncome: Option;\n personalDataOptions: PersonalDataFromOutput;\n cpiAdditionalQuestions: Option;\n };\n}\n\nexport function expensesAndAdditionalIncomeReworkAction(\n startLoanApplicationConsent: StartLoanApplicationInput,\n hasRefinancingCredits: 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 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 KYCAction {\n type: \"KYC\";\n payload: {\n restoredPersonalDataOptions: Option;\n hasRefinancingCredits: boolean;\n };\n}\n\nexport function kycAction(hasRefinancingCredits: boolean): KYCAction {\n return {\n type: \"KYC\",\n payload: {\n restoredPersonalDataOptions: option.none,\n hasRefinancingCredits,\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 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 isKycNeeded: boolean,\n askForCredentials?: boolean\n): FollowUpAndSignatureAction {\n return {\n type: \"FollowUpAndSignature\",\n payload: {\n restoredPersonalDataOptions: option.none,\n hasRefinancingCredits,\n isKycNeeded,\n askForCredentials,\n },\n };\n}\n\nexport function restoreFollowUpAndSignatureAction(\n restoredPersonalDataOptions: PersonalDataFromOutput,\n hasRefinancingCredits: boolean,\n isKycNeeded: boolean\n): FollowUpAndSignatureAction {\n return {\n type: \"FollowUpAndSignature\",\n payload: {\n restoredPersonalDataOptions: option.some(restoredPersonalDataOptions),\n hasRefinancingCredits,\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 | 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 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 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 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 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.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 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 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 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 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 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 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.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.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.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.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.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 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.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.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.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.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.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.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.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.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.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 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.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.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 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.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.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.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.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 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 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 action.payload.isKycNeeded,\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 \"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.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 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.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.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.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.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.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 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.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.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.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.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.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 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.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.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 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.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.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.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 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 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 \"KYC\":\n switch (action.type) {\n case \"GoBack\":\n return pipe(\n state.payload.hasRefinancingCredits,\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.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.initialConsent,\n state.payload.cpiAdditionalQuestions,\n state.payload.rework\n ),\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.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 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.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.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.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.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.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.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 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.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.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.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.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 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.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 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.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 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 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.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 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.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 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 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 option.none\n );\n case \"REVIEW_INFORMATION\":\n return creditChecks(\n loanOffer,\n option.some(restoredData.startStandardLoanApplicationRequest),\n true,\n rework,\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 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 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 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 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 restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.genericLoanResponse.disbursementAccount\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 restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework,\n restoredData.genericLoanResponse.disbursementAccount\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 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 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 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 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 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 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 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 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 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 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 navigateReworkStep(\n state:\n | PersonalDataState\n | UploadDocumentsState\n | FollowUpAndSignatureState\n | AccountsForRefinancingState\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 \"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 restoredData.startStandardLoanApplicationRequest,\n restoredData.additionalQuestionsCPIRequest,\n rework\n )\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 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 restoredData.additionalQuestionsCPIRequest\n );\n\n case \"UPLOAD_DOCUMENTS\":\n return uploadDocuments(\n restoredData.genericLoanResponse.productType,\n getHasRefinancingCredits(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 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 { 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 { 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\";\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 ExternalLiabilityFormModel = LoanItem & {\n creditorName: string;\n accountForDisbursment: string;\n variableSymbol: string;\n creditCardNumber: string;\n};\n\nexport type LiabilityFormModel = LoanItem & {\n selected: 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 { 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 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\";\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 = (hasRefinancingCredits: boolean) => {\n return pipe(\n props.authenticationMethod,\n option.fold(\n () =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(kycAction(hasRefinancingCredits))\n ),\n () =>\n pipe(\n isKycNeeded(),\n taskEither.chain(({ isKycNeeded }) =>\n taskEither.fromIO(() =>\n dispatchWithRejectionCheck(\n isKycNeeded\n ? kycAction(hasRefinancingCredits)\n : //TODO: for TLS, should this go to micropayment before signature?\n followUpAndSignatureAction(\n hasRefinancingCredits,\n isKycNeeded\n )\n )\n )\n )\n )\n )\n );\n };\n\n const handleAccountsForRefinancingAndKYC = (hasRefinancingCredits: boolean) =>\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 {\n return handleKyc(hasRefinancingCredits);\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 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(hasRefinancingCredits, false, false)\n )\n );\n }\n\n return enableVirtualCardsLoanImpl && !isExistingClient\n ? handlePackageSelection(loanOffer)\n : handleAccountsForRefinancingAndKYC(hasRefinancingCredits);\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 = (hasRefinancingCredits: boolean) => {\n return pipe(\n virtualCardNext(),\n taskEither.chain(() =>\n handleAccountsForRefinancingAndKYC(hasRefinancingCredits)\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 \"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 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 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(hasRefinancingCredits)\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.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 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 pipe(\n state.payload.rework.reworkSteps,\n option.fold(\n handleKyc(state.payload.hasRefinancingCredits),\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 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 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 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.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 \"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 \"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\";\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 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 />\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: \"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 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":""}