package cz.moneta.test.dsl.ufo.banka.pages.main;

import cz.moneta.test.dsl.ufo.banka.pages.cards.credit.HPO019_S001_CreditCardDetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.cards.credit.HPO039_S001_MbcDetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.cards.credit.ONC001_S001_QuickCreditCardRequestPage;
import cz.moneta.test.dsl.ufo.banka.pages.cards.debit.HPO009_S001_DebitCardDetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.cards.debit.OBR003_S001_ClientContractSignPage;
import cz.moneta.test.dsl.ufo.banka.pages.common.pages.OBR001_S001_PrintInstructionPage;
import cz.moneta.test.dsl.ufo.banka.pages.common.pages.POD045_OBR001_NeedToUpdateCifPage;
import cz.moneta.test.dsl.ufo.banka.pages.fon.CIF113_S001_ChangeDataFO;
import cz.moneta.test.dsl.ufo.banka.pages.fon.GDP001_S001_ClientConsentsPage;
import cz.moneta.test.dsl.ufo.banka.pages.ib.ADC001_S001_IbPasswordKeyPage;
import cz.moneta.test.dsl.ufo.banka.pages.ib.HPO008_IbDetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.ib.HPO040_S001_DirectBankingServicesPage;
import cz.moneta.test.dsl.ufo.banka.pages.insurance.OBR001_InsuranceSelectPage;
import cz.moneta.test.dsl.ufo.banka.pages.loans.creditCard.ONC001_S001_NewCreditCardPage;
import cz.moneta.test.dsl.ufo.banka.pages.loans.expres.NEP001_S001_NewExpressPage;
import cz.moneta.test.dsl.ufo.banka.pages.loans.expres.NEP009_S001_Existing_ApplicationsPage;
import cz.moneta.test.dsl.ufo.banka.pages.loans.flexikredit.HPO003_FlexikreditDetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.loans.flexikredit.ONC001_S001_NewFlexikreditPage;
import cz.moneta.test.dsl.ufo.banka.pages.main.client.settings.ADR004_S001_EnterContactAddressPage;
import cz.moneta.test.dsl.ufo.banka.pages.main.client.settings.TIS051_S001_DispositionGeneratePage;
import cz.moneta.test.dsl.ufo.banka.pages.main.components.*;
import cz.moneta.test.dsl.ufo.banka.pages.main.savings.account.SPU021_S001_SavingsAccountCreatePage;
import cz.moneta.test.dsl.ufo.banka.pages.po.HPO018_S001_AdcPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.consolidation.UDC001_S001_ConsolidationPartOnePage;
import cz.moneta.test.dsl.ufo.banka.pages.products.current.account.BPP001_S001_DocumentationSendPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.current.account.BUF001_S001_CurrentAccountPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.current.account.HPO001_S001_CurrentAccountDetailsPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.insurance.BAL001_OBR001_008_InsuranceTypeSelectionPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.mutual.funds.INF001_S001_MutualFundsCIFdataPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.one.click.BAL024_S001_OneClickPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.one.click.BAL031_S001_OneClickRetailPage;
import cz.moneta.test.dsl.ufo.banka.pages.products.universal.request.UZO001_S001_UniverzalRequestIdentificationPage;
import cz.moneta.test.harness.context.StoreAccessor;
import cz.moneta.test.harness.endpoints.ufo.UfoEndpoint;
import cz.moneta.test.harness.support.web.CustomAction;
import cz.moneta.test.harness.support.web.WebFlow;

public interface HKO101_S001_MainClientPageTransitions extends WebFlow<HKO101_S001_MainClientPageTransitions>, StoreAccessor {

    ADR004_S001_EnterContactAddressPage onEnterContactAddressPageAndDismissAlertIfVisible();

    POD045_OBR001_NeedToUpdateCifPage onToNeedToUpdateCif();

    OBR001_InsuranceSelectPage onInsuranceSelectPage();

    BAL024_S001_OneClickPage onOneClickPage();

    DOK001_S001_SelectionOfSubmittedDocumentsPage onSelectionOfSubmittedDocumentsPage();

    BUF001_S001_CurrentAccountPage onCurrentAccountPage();

    NEP001_S001_NewExpressPage onExpressPage();

    ONC001_S001_NewFlexikreditPage onFlexikreditPage();

    UDC001_S001_ConsolidationPartOnePage onConsolidationPage();

    ONC001_S001_NewCreditCardPage onCreditCardPage();

    NEP009_S001_Existing_ApplicationsPage onExistingApplicationsPage();

    ONC001_S001_QuickCreditCardRequestPage onQuickCreditCardRequestPage();

    SPU021_S001_SavingsAccountCreatePage onSavingsAccountPage();

    ADC001_S001_IbPasswordKeyPage onIbPasswordKeyPage();

    ADC001_OBR001_002_IbTypeSelectionPage onIbTypeSelectionPage();

    UZO001_S001_UniverzalRequestIdentificationPage onUniversalRequestPage();

    INF001_S001_MutualFundsCIFdataPage onMutualFundsCIFdataPage();

    BAL001_OBR001_008_InsuranceTypeSelectionPage onInsuranceTypeSelectionPage();

    TIS011_OBR001_PrintOptionsPage onPrintOptionsPage();

    WUE001_S001_BuildingSavingsPage onBuildingSavingsPage();

    TIS051_S001_DispositionGeneratePage onDispositionGeneratePage();

    HPO019_S001_CreditCardDetailPage onCreditCardDetailPage();

    HPO039_S001_MbcDetailPage onMBCDetailPage();

    HPO009_S001_DebitCardDetailPage onDebitCardDetailPage();

    HPO001_S001_CurrentAccountDetailsPage onCurrentAccountDetailsPage();

    @CustomAction
    default HPO009_S001_DebitCardDetailPage onDebitCardDetailPageAndCloseAlertIfPresent() {
        UfoEndpoint endpoint = getEndpoint(UfoEndpoint.class);
        if (endpoint.isAlertPresent(1)) {
            endpoint.dismissAlert(1);
        }
        return null;
    }

    HPO003_FlexikreditDetailPage onFlexiCreditDetailPage();

    HPO008_IbDetailPage onIbDetailPage();

    OBR001_S001_PrintInstructionPage onRegistrationCertificatePage();

    BPP001_S001_DocumentationSendPage onDocumentationSendPage();

    BUF051_S001_CreateCurrentAccountPage onCreateSMECurrentAccountPage();

    OBR001_S001_PrintInstructionPage onSmeAutomatsPage();

    POD045_OBR001_NeedToUpdateCifPage onNeedCifUpdate();

    CIF003_S002_EditPoFopPage onEditFopPage();

    OBR003_S001_ClientContractSignPage onClientContractSignPage();

    GDP001_S001_ClientConsentsPage onClientConsentPage();

    CIF003_S001_EditCifPage onEditCifPage();

    CIF113_S001_ChangeDataFO onChangeDataFO();

    CIF003_S002_EditPoFopPage onEditPoFopPage();

    HPO018_S001_AdcPage onAdcPage();

    BAL031_S001_OneClickRetailPage onOneClickRetailPage();

    HPO040_S001_DirectBankingServicesPage onDirectBankingServices();

    DOK001_S001_SelectionOfSubmittedDocumentsPage onSelectionOfSubmittedDocuments();
}
