package it.integry.integrywmsnative;

import javax.inject.Singleton;

import dagger.Component;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.core.expansion.BaseActivityComponent;
import it.integry.integrywmsnative.core.expansion.BaseActivityModule;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentComponent;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentModule;
import it.integry.integrywmsnative.core.expansion.BaseFragmentComponent;
import it.integry.integrywmsnative.core.expansion.BaseFragmentModule;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoComponent;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoModule;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingComponent;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingModule;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoComponent;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoModule;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingComponent;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariComponent;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariModule;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsComponent;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsModule;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsComponent;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsModule;
import it.integry.integrywmsnative.gest.inventario.dialogs.ask_info_inventario.DialogAskInfoInventarioComponent;
import it.integry.integrywmsnative.gest.inventario.dialogs.ask_info_inventario.DialogAskInfoInventarioModule;
import it.integry.integrywmsnative.gest.inventario.picking.PickingInventarioComponent;
import it.integry.integrywmsnative.gest.inventario.picking.PickingInventarioModule;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule;
import it.integry.integrywmsnative.gest.login.LoginComponent;
import it.integry.integrywmsnative.gest.login.LoginModule;
import it.integry.integrywmsnative.gest.main.MainActivityComponent;
import it.integry.integrywmsnative.gest.main.MainActivityModule;
import it.integry.integrywmsnative.gest.main.MainFragmentComponent;
import it.integry.integrywmsnative.gest.main.MainFragmentModule;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoComponent;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoModule;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoComponent;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoModule;
import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaComponent;
import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule;
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneComponent;
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneModule;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.settings.MainSettingsComponent;
import it.integry.integrywmsnative.gest.settings.MainSettingsModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreComponent;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditModule;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalComponent;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUComponent;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUModule;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUComponent;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_to_return.DialogInputQuantityToReturnComponent;
import it.integry.integrywmsnative.view.dialogs.input_quantity_to_return.DialogInputQuantityToReturnModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCComponent;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCModule;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule;

// Definition of the Application graph
@Singleton
@Component(modules = {
        RoomModule.class,
        SplashActivityModule.class,
        MainApplicationModule.class,
        BaseActivityModule.class,
        BaseFragmentModule.class,
        BaseDialogFragmentModule.class,
        LoginModule.class,
        MainActivityModule.class,
        MainFragmentModule.class,
        MainAccettazioneOrdiniElencoModule.class,
        ListaBancaliModule.class,
        ContenutoBancaleModule.class,
        PVOrdiniAcquistoGrigliaModule.class,
        PVOrdineAcquistoEditModule.class,
        PickingLiberoModule.class,
        RettificaGiacenzeModule.class,
        ElencoInventariModule.class,
        SpedizioneModule.class,
        AccettazioneOrdiniPickingModule.class,
        UltimeConsegneClienteModule.class,
        UltimiArriviFornitoreModule.class,
        PickingResiModule.class,
        OrdiniUscitaElencoModule.class,
        DialogInputQuantityV2Module.class,
        DialogInputLUProdModule.class,
        DialogScanArtModule.class,
        DialogScanOrCreateLUModule.class,
        ProdFabbisognoLineeProdModule.class,
        VersamentoMerceModule.class,
        DialogAskMagazzinoProssimitaModule.class,
        DialogChooseBatchLotModule.class,
        DialogRowInfoProdFabbisognoLineeProdModule.class,
        ProdOrdineProduzioneElencoModule.class,
        ProdRecuperoMaterialeModule.class,
        ProdVersamentoMaterialeModule.class,
        DialogChooseArtsFromMtbColrListModule.class,
        DocInterniModule.class,
        DialogSelectDocInfoModule.class,
        DocInterniEditFormModule.class,
        DialogSelectDocRowsModule.class,
        DialogAskClienteModule.class,
        DialogEditArticoloModule.class,
        DialogPrintOrderSSCCListModule.class,
        ProdLineeProduzioneModule.class,
        ProdDettaglioLineaModule.class,
        DialogPrintUlSSCCModule.class,
        DialogAskInfoInventarioModule.class,
        DialogInputPesoLUModule.class,
        PickingInventarioModule.class,
        BottomSheetItemEditModule.class,
        BottomSheetInventarioActionsModule.class,
        BottomSheetInventarioRowActionsModule.class,
        BottomSheetMtbColrEditModalModule.class,
        DialogChooseArtsFromMtbAartListModule.class,
        MainSettingsModule.class,
        DialogInfoSituazioneArticoloModule.class,
        DialogSelectArtToOrderModule.class,
        MainAccettazioneBollaElencoModule.class,
        AccettazioneBollaPickingModule.class,
        DialogBindProductBarcodeWithPackageModule.class,
        DialogAskUnknownBarcodeNotesModule.class,
        ProdVersamentoMaterialeInBufferModule.class,
        DialogInputQuantityToReturnModule.class,
        DialogInfoAggiuntiveLUModule.class,
        DialogAskLineaProdModule.class
})
public interface MainApplicationComponent {

    BaseActivityComponent.Factory baseActivityComponent();

    BaseFragmentComponent.Factory baseFragmentComponent();

    BaseDialogFragmentComponent.Factory baseDialogFragmentComponent();

    SplashActivityComponent.Factory splashActivityComponent();

    LoginComponent.Factory loginActivityComponent();

    MainActivityComponent.Factory mainActivityComponent();

    MainFragmentComponent.Factory mainFragmentComponent();

    MainAccettazioneOrdiniElencoComponent.Factory mainAccettazioneOrdiniComponent();

    ListaBancaliComponent.Factory listaBancaliComponent();

    ContenutoBancaleComponent.Factory contenutoBancaleComponent();

    PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent();

    PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent();

    PickingLiberoComponent.Factory pickingLiberoComponent();

    RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();

    ElencoInventariComponent.Factory inventarioComponent();

    SpedizioneComponent.Factory spedizioneComponent();

    AccettazioneOrdiniPickingComponent.Factory accettazionePickingComponent();

    UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent();

    UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent();

    PickingResiComponent.Factory pickingResiComponent();

    OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();

    DialogAskClienteComponent.Factory dialogAskClienteComponent();

    DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();

    DialogInputLUProdComponent.Factory dialogInputLUProdComponent();

    DialogScanArtComponent.Factory dialogScanArtComponent();

    DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent();

    ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();

    VersamentoMerceComponent.Factory versamentoMerceComponent();

    DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();

    DialogScanGrigliaAcquistoComponent.Factory dialogScanLisAComponent();

    DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent();

    DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();

    ProdRientroMerceComponent.Factory prodRientroMerceComponent();

    ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent();

    ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent();

    ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent();

    ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();

    DialogChooseArtsFromMtbColrListComponent.Factory dialogChooseArtsFromListaArtsComponent();

    DocInterniComponent.Factory docInterniComponent();

    DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();

    DocInterniEditFormComponent.Factory docInterniEditFormComponent();

    DialogEditArticoloComponent.Factory dialogEditArticoloComponent();

    DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent();

    ProdLineeProduzioneComponent.Factory prodLineeProduzioneComponent();

    ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent();

    DialogPrintUlSSCCComponent.Factory dialogPrintUlSSCCComponent();

    DialogAskInfoInventarioComponent.Factory dialogAskInfoInventarioComponent();

    DialogInputPesoLUComponent.Factory dialogInputPesoLUComponent();

    PickingInventarioComponent.Factory pickingInventarioComponent();

    BottomSheetItemEditComponent.Factory bottomSheetItemEditComponent();

    BottomSheetInventarioActionsComponent.Factory bottomSheetInventarioActionsComponent();

    BottomSheetInventarioRowActionsComponent.Factory bottomSheetInventarioRowActionsComponent();

    BottomSheetMtbColrEditModalComponent.Factory bottomSheetMtbColrEditModalComponent();

    DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent();

    MainSettingsComponent.Factory mainSettingsFragmentComponent();

    DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();

    DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent();

    DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent();

    MainAccettazioneBollaElencoComponent.Factory mainAccettazioneBollaElencoComponent();

    AccettazioneBollaPickingComponent.Factory accettazioneBollaPickingComponent();

    DialogBindProductBarcodeWithPackageComponent.Factory dialogBindProductBarcodeWithPackageComponent();

    DialogAskUnknownBarcodeNotesComponent.Factory dialogAskUnknownBarcodeNotesComponent();

    ProdVersamentoMaterialeInBufferComponent.Factory prodVersamentoMaterialeInBufferComponent();

    DialogInputQuantityToReturnComponent.Factory dialogInputQuantityToReturnComponent();

    DialogInfoAggiuntiveLUComponent.Factory dialogInfoAggiuntiveLUComponent();

    DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();

    void inject(MainApplication mainApplication);

    void inject(AppContext mainApplication);

}
