<?php

namespace Webkul\WebkulCsvImportBundle\Step;

use Akeneo\Tool\Component\Batch\Item\ItemProcessorInterface;
use Akeneo\Tool\Component\Batch\Item\ItemReaderInterface;
use Akeneo\Tool\Component\Batch\Item\ItemWriterInterface;
use Akeneo\Tool\Component\Batch\Model\StepExecution;
/**
 * Basic step implementation that read items, process them and write them
 *
 */
interface ItemStepInterface
{

    /**
     * Get reader
     *
     * @return ItemReaderInterface
     */
    public function getReader();

    /**
     * Get processor
     *
     * @return ItemProcessorInterface
     */
    public function getProcessor();

    /**
     * Get writer
     *
     * @return ItemWriterInterface
     */
    public function getWriter();

    /**
     * {@inheritdoc}
     */
    public function doExecute(StepExecution $stepExecution);

    /**
     * Flushes step elements
     */
    public function flushStepElements();
}
