using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Input;
using Valg.EVA.Skanning.Verify.Startup.VerifyBallotPaper.RenumberStrikeout;

namespace Valg.EVA.Skanning.Verify.Startup.VerifyBallotPaper.VerifiableViewModelsCollection
{
    public interface IVerifiableViewModelsCollectionVisitor
    {
        event PropertyChangedEventHandler PropertyChanged;

        ICommand ResumeVisitationOfVerifiableViewModelsCommand { get; }

        bool NoMoreViewModelsToVerifyOrRejected { get; }

        IEndOfVisitationCycleViewModel EndOfCycle { get; }

        void GotoNextVerifiableViewModel(bool verifyActionWasCommited);

        void SetViewModelsWithVerifiableContent(IEnumerable<IViewModelWithVerifiableContent> viewModels);

        void RemoveViewModelsWithVerifiableContent(IEnumerable<IViewModelWithVerifiableContent> viewModelsToRemove);

        bool HasViewModelsWithUnverifiedContent { get; }

        void Dispose();

        void SuspendFocusMove();

        void ResumeFocusMove();

        RenumberStrikeoutViewModel[] GetTargetedViewModelsForAutoVerify();
    }
}
