using System;
using System.Collections.Generic;
using System.ServiceModel;
using Aitex.Core.Account;
using Aitex.Core.Common;
using Aitex.Core.Common.DeviceData;
using Aitex.Sorter.Common;
using MECF.Framework.Common.Aitex.Core.RT.EMS;
using MECF.Framework.Common.Device.Bases;
using MECF.Framework.Common.Equipment;

namespace MECF.Framework.Common.OperationCenter
{
	[ServiceContract]
	[ServiceKnownType(typeof(ModuleName))]
	[ServiceKnownType(typeof(MoveType))]
	[ServiceKnownType(typeof(MoveOption))]
	[ServiceKnownType(typeof(Hand))]
	[ServiceKnownType(typeof(WaferStatus))]
	[ServiceKnownType(typeof(TransferInfo[]))]
	[ServiceKnownType(typeof(TransferInfo))]
	[ServiceKnownType(typeof(SignalTowerActions))]
	[ServiceKnownType(typeof(short[]))]
	[ServiceKnownType(typeof(bool[]))]
	[ServiceKnownType(typeof(string[]))]
	[ServiceKnownType(typeof(Dictionary<string, object>))]
	[ServiceKnownType(typeof(Tuple<string, int>))]
	[ServiceKnownType(typeof(List<Tuple<string, int>>))]
	[ServiceKnownType(typeof(ManualTransferTask))]
	[ServiceKnownType(typeof(ManualTransferTask[]))]
	[ServiceKnownType(typeof(MfcRorData))]
	[ServiceKnownType(typeof(MfcRorData[]))]
	[ServiceKnownType(typeof(Credential))]
    [ServiceKnownType(typeof(TimeUnit))]
    [ServiceKnownType(typeof(Dictionary<string, List<string>>))]

    public interface IInvokeService
	{
		[OperationContract]
		void DoOperation(string operationName, params object[] args);
	}
}
