package es.verdnatura.presentation.common

import android.graphics.drawable.Drawable
import android.view.View
import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
import es.verdnatura.presentation.view.feature.articulo.model.ItemCardRowVO
import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
import es.verdnatura.presentation.view.feature.delivery.model.Ticket
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO
import es.verdnatura.presentation.view.feature.inventario.model.ItemInventoryParking
import es.verdnatura.presentation.view.feature.login.model.WorkForms
import es.verdnatura.presentation.view.feature.packaging.model.ItemSupplier
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionScanVO
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.roadmap.model.RoadMapTruck
import es.verdnatura.presentation.view.feature.roadmap.model.RoadStopMapTruck
import es.verdnatura.presentation.view.feature.roadmap.model.StopMapTruckPallet
import es.verdnatura.presentation.view.feature.roadmap.model.TruckAction
import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.Sale
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import es.verdnatura.presentation.view.feature.smarttag.model.SmartTag
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake

interface OnOptionsSelectedListener {
    fun onOptionsItemSelected(item: Drawable)
}

interface OnPasillerosItemClickListener {
    fun onPasillerosItemClickListener(
        item: PasillerosItemVO,
        entryPoint: String,
        param: Any? = null
    )
}

interface OnMistakeWorkerClickListener {
    fun onMistakeWorkerClickListener(item: WorkerFromMistake)
}

interface HideBottomNavigation {
    fun hideBottomNavigation(entryPoint: String)
}

interface OnAjustesItemClickListener {
    fun onAjustesItemClickListener(item: AjustesItemVO)
}

interface OnItemCardRowClickListener {
    fun onItemCardRowClickListener(item: ItemCardRowVO)
}

interface OnItemImageLoadRowClickListener {
    fun onItemImageLoadRowClickListener(item: ExpeditionInfoSummary)
}

interface OnItemImageRouteRowClickListener {
    fun onItemImageRouteRowClickListener(item: RouteInfo, action: String)
}

interface OnItemButtonTicketRowClickListener {
    fun onItemButtonTicketRowClickListener(item: ClientTicketSalix, action: String)
}

interface OnItemButtonRoadMapStopRowClickListener {
    fun onItemButtonRoadMapStopRowClickListener(item: ClientTicketSalix, action: String)
}

interface OnItemButtonCMRRowClickListener {
    fun onItemButtonCMRRowClickListener(item: Ticket)
}

interface OnAddressRowClickListener {
    fun onAddressRowClickListener(item: ExpeditionInfoSummary)
}

/*interface OnItemExpeditionStateRowClickListener {
    fun OnItemExpeditionStateRowClickListener(item: ItemExpeditionStateRow)
}*/

interface OnBarcodeRowClickListener {
    fun onBarcodeRowClickListener(item: BarcodeVO)
}

interface OnSmartTagRowClickListener {
    fun onSmartTagRowClickListener(item: SmartTag)
}

interface OnGeneralItemRowClickListener {
    fun onGeneralItemRowClickListener(item: GeneralItem)
}

interface OnImageTrashClickListener {
    fun onImageTrashClickListener(item: Any)
}

interface OnEditSubQuantityListener {
    fun onEditSubQuantityListener(item: Any, text: String)
}

interface AdapterCallback {
    fun getPosition(): Int
}

interface OnItemClickListener {
    fun onItemClickListener(item: ItemSupplier)
}

interface OnImageUpdateClickListener {
    fun onImageUpdateClickListener(item: Any)
}

interface OnWorkFormsItemRowClickListener {
    fun onWorkFormsItemRowClickListener(item: WorkForms)
}

interface OnTrashItemRowClickListener {
    fun onTrashItemRowClickListener(item: WorkForms)
}

interface OnLocationRowClickListener {
    fun onLocationRowClickListener(item: ItemLocationVO)
}

interface OnInvetoryNichoClickListener {
    fun onInvetoryNichoClickListener(item: ItemInventaryVO)
}

interface OnItemProposalClickListener {
    fun onItemProposalClickListener(item: ItemProposal)
}

interface OnAutomaticItemClickListener {
    fun onAutomaticItemClickListener(position: Int)
}

interface OnClientHistoricItemClickListener {
    fun onClientHistoricItemClickListener(item: ItemHistoricoVO)
}

interface OnVisibleClickListener {
    fun onVisibleClickListener(item: ItemUbicadorVO)
}

interface OnVisibleClickListenerNew {
    fun onVisibleClickListener(item: ItemUbicador)
}

interface OnVisibleInventoryClickListener {
    fun onVisibleInventoryClickListener(item: ItemInventoryParking)
}

interface OnMoreClickListener {
    fun onMoreClickListener(item: ItemUbicadorVO)
}

interface OnMoreClickListenerNew {
    fun onMoreClickListener(item: ItemUbicador)
}

interface OnTruckClickListener {
    fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String)
}

interface OnRoadMapClickListener {
    fun onRoadMapClickListener(item: RoadMapTruck, entryPoint: String)
}

interface OnStopMapClickListener {
    fun onStopMapClickListener(
        item: RoadStopMapTruck,
        entryPoint: String,
        action: TruckAction,
        view: View? = null
    )
}

interface OnStopMapLoadClickListener {
    fun onStopMapClickListener(item: RoadStopMapTruck, entryPoint: String)
}

interface OnStopMapUnloadClickListener {
    fun onStopMapClickListener(item: RoadStopMapTruck, entryPoint: String)
}

interface OnPrintClickListener {
    fun onPrintClickListener(item: StopMapTruckPallet, entryPoint: String)
}

interface OnPalletClickListener {
    fun onPalletClickListener(itemTruck: ItemExpeditionTruckVO, itemPallet: ItemPalletVO)
}

interface OnComprobarPalletViewClickListener {
    fun onComprobarPalletViewClickListener(
        itemTruck: ItemExpeditionTruckVO,
        itemPallet: ItemPalletVO
    )
}

interface OnScanLongClickListener {
    fun onScanLongClickListener(itemExpeditionScanVO: ItemExpeditionScanVO)
}

interface OnCollectionSelectedListener {
    fun onCollectionSelected(collection: CollectionVO, type: String)
}

interface OnCollectionTicketSelectedListener {
    fun onCollectionSelected(
        collection: CollectionTicket,
        type: String,
        hasPicking: Boolean = false,
        hasToAdd: Boolean = false
    )
}

interface OnQuantityClickListener {
    fun onQuantityClick(sale: SaleVO)
}

interface OnQuantityClickSaleListener {
    fun onQuantityClick(sale: Sale)
}

interface OnPackingClickListener {
    fun onPackingClick(sale: SaleVO)
}

interface OnPackingClickSaleListener {
    fun onPackingClick(sale: Sale)
}

interface OnSaleClickListener {
    fun onSaleClick(sale: SaleVO)
}

interface OnSaleClickSaleListener {
    fun onSaleClick(sale: Sale)
}

interface OnReubicationClickListener {
    fun onReubicationClick(reubication: Reubication)
}

interface OnMistakeClickListener {
    fun onMistakeClickListener(sale: SaleVO)
}

interface OnTicketClickListener {
    fun onTicketClickListener(sale: SaleVO)
}

interface OnTicketClickSaleListener {
    fun onTicketClickListener(sale: Sale)
}

interface OnBuyerSelectedListener {
    fun onBuyerSelected(userFk: String)
}

interface OnStarSelectedListener {
    fun onStarSelected(vId: String, vStars: String)
}

interface OnVehicleSelected {
    fun onVehicleClick(userFk: String)
}

interface OnClickDynamic {
    fun onClickDynamic(addressFK: Int)
}

interface InteceptorListener {
    fun onInterceptionResult(visibility: Int)
}

interface MainActivityListener {
    fun onApplicationEventAnimation(visibility: Int)
}

interface LoginListener {
    fun onApplicationEventAnimation(visibility: Int)
}

interface SignListener {
    fun onApplicationEventAnimation(visibility: Int)
}

interface OnBackPressedListener {
    fun onBackPressedHandled(): Boolean
}