using Aitex.Sorter.Common;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Schedulers;

namespace MECF.Framework.RT.EquipmentLibrary.LogicUnits
{
    public interface ITransferTarget
    {
        bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
        bool TransferHandoff(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
        bool PostTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);

        bool CheckReadyForTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
        void NoteTransferStart(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
        void NoteTransferStop(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);


    }

    public interface ITransferRobot
    {
        bool Pick(ModuleName target, Hand blade, int targetSlot, out string reason);
        bool Place(ModuleName target, Hand blade, int targetSlot, out string reason);

        bool PickAndPlace(ModuleName pickTarget, Hand pickHand, int pickSlot, ModuleName placeTarget, Hand placeHand, int placeSlot, out string reason);
        bool Goto(ModuleName target, Hand blade, int targetSlot, out string reason);

    }
}
