using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace UnifiedPOS.SmartCardRW.V1_4
{
    [ServiceContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public interface SmartCardRW
    {
        #region Version 1.1

        //
        // Common Properties
        //

		//[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetAutoDisable", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetAutoDisableResponse")]
		//[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//bool GetAutoDisable(string ConsumerID);

		//[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetAutoDisable", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetAutoDisableResponse")]
		//[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//void SetAutoDisable(string ConsumerID, bool AutoDisable);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapCompareFirmwareVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapCompareFirmwareVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetCapCompareFirmwareVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapPowerReporting", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapPowerReportingResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        PowerReporting GetCapPowerReporting(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapStatisticsReporting", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapStatisticsReportingResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetCapStatisticsReporting(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapUpdateFirmware", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapUpdateFirmwareResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetCapUpdateFirmware(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapUpdateStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapUpdateStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetCapUpdateStatistics(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCheckHealthText", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCheckHealthTextResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetCheckHealthText(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetClaimed", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetClaimedResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetClaimed(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDataCount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDataCountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        int GetDataCount(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDataEventEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDataEventEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetDataEventEnabled(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetDataEventEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetDataEventEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetDataEventEnabled(string ConsumerID, bool DataEventEnabled);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetDeviceEnabled(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetDeviceEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetDeviceEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetDeviceEnabled(string ConsumerID, bool DeviceEnabled);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetFreezeEvents", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetFreezeEventsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        bool GetFreezeEvents(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetFreezeEvents", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetFreezeEventsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetFreezeEvents(string ConsumerID, bool FreezeEvents);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetOutputID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetOutputIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        int GetOutputID(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPowerNotify", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPowerNotifyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        PowerNotification GetPowerNotify(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetPowerNotify", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetPowerNotifyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetPowerNotify(string ConsumerID, PowerNotification PowerNotify);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPowerState", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPowerStateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        PowerState GetPowerState(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetState", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetStateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        ControlState GetState(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceControlDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceControlDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetDeviceControlDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceControlVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceControlVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        UposVersion GetDeviceControlVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceServiceDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceServiceDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetDeviceServiceDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceServiceVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetDeviceServiceVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        UposVersion GetDeviceServiceVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPhysicalDeviceDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPhysicalDeviceDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetPhysicalDeviceDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPhysicalDeviceName", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetPhysicalDeviceNameResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetPhysicalDeviceName(string ConsumerID);

        //
        // Specific Properties
		//

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapCardErrorDetection", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapCardErrorDetectionResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		bool GetCapCardErrorDetection(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapInterfaceMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapInterfaceModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardInterfaceModes GetCapInterfaceMode();
		int GetCapInterfaceMode(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapIsoEmvMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapIsoEmvModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardIsoEmvModes GetCapIsoEmvMode();
		int GetCapIsoEmvMode(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapSCPresentSensor", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapSCPresentSensorResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		int GetCapSCPresentSensor(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapSCSlots", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapSCSlotsResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		int GetCapSCSlots(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapTransmissionProtocol", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetCapTransmissionProtocolResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardTransmissionProtocols GetCapTransmissionProtocol(string ConsumerID);
		int GetCapTransmissionProtocol(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetInterfaceMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetInterfaceModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardInterfaceModes 
		int GetInterfaceMode(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetInterfaceMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetInterfaceModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//void SetInterfaceMode(SmartCardInterfaceModes InterfaceMode);
		void SetInterfaceMode(string ConsumerID, int InterfaceMode);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetIsoEmvMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetIsoEmvModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardIsoEmvModes GetIsoEmvMode();
		int GetIsoEmvMode(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetIsoEmvMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetIsoEmvModeResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//void SetIsoEmvMode(SmartCardIsoEmvModes IsoEmvMode);
		void SetIsoEmvMode(string ConsumerID, int IsoEmvMode);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetSCPresentSensor", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetSCPresentSensorResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		int GetSCPresentSensor(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetSCSlot", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetSCSlotResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		int GetSCSlot(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetSCSlot", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetSCSlotResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void SetSCSlot(string ConsumerID, int SCSlot);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetTransactionInProgress", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetTransactionInProgressResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		bool GetTransactionInProgress(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetTransmissionProtocol", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetTransmissionProtocolResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		//SmartCardTransmissionProtocols GetTransmissionProtocol(string ConsumerID);
		int GetTransmissionProtocol(string ConsumerID);

        //
        // Common Methods
        //

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/Open", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/OpenResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        //void Open(string ConsumerID, string EndpointAddress);

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/Close", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CloseResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        //void Close(string ConsumerID, string EndpointAddress);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/Claim", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClaimResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void Claim(string ConsumerID, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/Release", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ReleaseResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void Release(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CheckHealth", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CheckHealthResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void CheckHealth(string ConsumerID, HealthCheckLevel Level);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearInput", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearInputResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void ClearInput(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearInputProperties", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearInputPropertiesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void ClearInputProperties(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearOutput", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ClearOutputResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void ClearOutput(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/DirectIO", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/DirectIOResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        DirectIOData DirectIO(string ConsumerID, int Command, int Data, object Obj);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CompareFirmwareVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CompareFirmwareVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        CompareFirmwareResult CompareFirmwareVersion(string ConsumerID, string FirmwareFileName);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ResetStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ResetStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void ResetStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/RetrieveStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/RetrieveStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string RetrieveStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UpdateFirmware", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UpdateFirmwareResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void UpdateFirmware(string ConsumerID, string FirmwareFileName);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UpdateStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UpdateStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void UpdateStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        //
        // Specific Methods
        //

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/BeginInsertion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/BeginInsertionResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void BeginInsertion(string ConsumerID, int Timeout);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/BeginRemoval", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/BeginRemovalResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void BeginRemoval(string ConsumerID, int Timeout);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/EndInsertion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/EndInsertionResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void EndInsertion(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/EndRemoval", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/EndRemovalResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void EndRemoval(string ConsumerID);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ReadData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/ReadDataResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		byte[] ReadData(string ConsumerID, SmartCardReadAction Action, byte[] Data);

		[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/WriteData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/WriteDataResponse")]
		[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
		void WriteData(string ConsumerID, SmartCardWriteAction Action, byte[] Data);

        #endregion

        #region Version 1.2

        //
        // Session Management
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetWSPOSVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetWSPOSVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        UposVersion GetWSPOSVersion();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GenerateConsumerID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GenerateConsumerIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GenerateConsumerID();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/OpenSession", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/OpenSessionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void OpenSession(string ConsumerID, string EndpointAddress);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CloseSession", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CloseSessionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void CloseSession(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetProviderSessionTimeout", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetProviderSessionTimeoutResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        int GetProviderSessionTimeout(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/KeepAlive", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/KeepAliveResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void KeepAlive(string ConsumerID);

        //
        // Device Control
        // 

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/OpenDevice", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/OpenDeviceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void OpenDevice(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CloseDevice", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/CloseDeviceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void CloseDevice(string ConsumerID);

        //
        // Event Polling
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/PollForUPOSEvent", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/PollForUPOSEventResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        SmartCardRWEvent PollForUPOSEvent(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetEventResponse", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetEventResponseResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetEventResponse(string ConsumerID, SmartCardRWEventResponse EventResponse);

        #endregion

        #region Version 1.3

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetEncryptedClaimedConsumerID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/GetEncryptedClaimedConsumerIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        string GetEncryptedClaimedConsumerID();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetEventRequestProperties", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/SetEventRequestPropertiesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/UposException", Name = "UposException")]
        void SetEventRequestProperties(string ConsumerID, PropertyNameList list);

        #endregion
    }

    #region Version 1.1

    //
    // Common Data Types
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DirectIOData
    {
        [DataMember]
        public int Data { get; set; }
        [DataMember]
        public object Obj { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class UposException
    {
        [DataMember]
        public ErrorCode ErrorCode { get; set; }
        [DataMember]
        public int ErrorCodeExtended { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class UposVersion
    {
        [DataMember]
        public int Major { get; set; }
        [DataMember]
        public int Minor { get; set; }
        [DataMember]
        public int Build { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class Statistic
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Value { get; set; }
    }

    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/", ItemName = "Statistic")]
    public class StatisticList : List<Statistic>
    {
    }

    //
    // Common Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum CompareFirmwareResult
    {
        [EnumMember]
        CFV_FIRMWARE_OLDER,
        [EnumMember]
        CFV_FIRMWARE_SAME,
        [EnumMember]
        CFV_FIRMWARE_NEWER,
        [EnumMember]
        CFV_FIRMWARE_DIFFERENT,
        [EnumMember]
        CFV_FIRMWARE_UNKNOWN,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum ControlState
    {
        [EnumMember]
        S_CLOSED,
        [EnumMember]
        S_IDLE,
        [EnumMember]
        S_BUSY,
        [EnumMember]
        S_ERROR,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum ErrorCode
    {
        [EnumMember]
        E_CLOSED,
        [EnumMember]
        E_CLAIMED,
        [EnumMember]
        E_NOTCLAIMED,
        [EnumMember]
        E_NOSERVICE,
        [EnumMember]
        E_DISABLED,
        [EnumMember]
        E_ILLEGAL,
        [EnumMember]
        E_NOHARDWARE,
        [EnumMember]
        E_OFFLINE,
        [EnumMember]
        E_NOEXIST,
        [EnumMember]
        E_EXISTS,
        [EnumMember]
        E_FAILURE,
        [EnumMember]
        E_TIMEOUT,
        [EnumMember]
        E_BUSY,
        [EnumMember]
        E_EXTENDED,
        [EnumMember]
        E_DEPRECATED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum HealthCheckLevel
    {
        [EnumMember]
        CH_INTERNAL,
        [EnumMember]
        CH_EXTERNAL,
        [EnumMember]
        CH_INTERACTIVE,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum PowerNotification
    {
        [EnumMember]
        PN_DISABLED,
        [EnumMember]
        PN_ENABLED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum PowerReporting
    {
        [EnumMember]
        PR_NONE,
        [EnumMember]
        PR_STANDARD,
        [EnumMember]
        PR_ADVANCED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum PowerState
    {
        [EnumMember]
        PS_UNKNOWN,
        [EnumMember]
        PS_ONLINE,
        [EnumMember]
        PS_OFF,
        [EnumMember]
        PS_OFFLINE,
        [EnumMember]
        PS_OFF_OFFLINE,
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum StatisticCategories
    {
        [EnumMember]
        All,
        [EnumMember]
        Manufacturer,
        [EnumMember]
        Upos,
    }
    */
    public class StatisticCategories
    {
        public const string All = "";
        public const string Manufacturer = "M_";
        public const string Upos = "U_";
    }

    //
    // Specific Data Types
    //

    //
    // Specific Enumerations
    //

	// 削除理由：定数化
	//[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
	//public enum SmartCardInterfaceModes
	//{
	//    [EnumMember]
	//    Apdu,
	//    [EnumMember]
	//    Block,
	//    [EnumMember]
	//    Transaction,
	//    [EnumMember]
	//    Xml,
	//}

	// 削除理由：定数化
	//[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
	//public enum SmartCardIsoEmvModes
	//{
	//    [EnumMember]
	//    Emv,
	//    [EnumMember]
	//    Iso,
	//}


	[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
	public enum SmartCardReadAction
	{
		[EnumMember]
        SC_READ_DATA,
		[EnumMember]
        SC_READ_PROGRAM,
		[EnumMember]
        SC_EXECUTE_AND_READ_DATA,
		[EnumMember]
        SC_XML_READ_BLOCK_DATA,
	}

	// 削除理由：定数化
	//[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
	//public enum SmartCardTransmissionProtocols
	//{
	//    [EnumMember]
	//    T0,
	//    [EnumMember]
	//    T1,
	//}

	[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
	public enum SmartCardWriteAction
	{
		[EnumMember]
        SC_STORE_DATA,
		[EnumMember]
        SC_STORE_PROGRAM,
		[EnumMember]
        SC_EXECUTE_DATA,
		[EnumMember]
        SC_XML_BLOCK_DATA,
		[EnumMember]
        SC_SECURITY_FUSE,
		[EnumMember]
        SC_RESET,
	}

    //
    // Constants
    //

    public class ExtendedError
    {
        public const int EFIRMWARE_BAD_FILE = 281;
        public const int ESTATS_ERROR = 280;
        public const int ESTATS_DEPENDENCY = 282;

		//
		// Specific Constants
		//
		public const int ESC_READ = 201;
		public const int ESC_WRITE = 202;
		public const int ESC_TORN = 203;
		public const int ESC_NO_CARD = 204;

	}

    public class StatisticProperties
    {
        public const string CommunicationErrorCount = "CommunicationErrorCount";
        public const string DeviceCategory = "DeviceCategory";
        public const string FirmwareRevision = "FirmwareRevision";
        public const string HoursPoweredCount = "HoursPoweredCount";
        public const string InstallationDate = "InstallationDate";
        public const string Interface = "Interface";
        public const string ManufactureDate = "ManufactureDate";
        public const string ManufacturerName = "ManufacturerName";
        public const string MechanicalRevision = "MechanicalRevision";
        public const string ModelName = "ModelName";
        public const string SerialNumber = "SerialNumber";
        public const string UnifiedPOSVersion = "UnifiedPOSVersion";
    }

    public class Wait
    {
        public const int FOREVER = -1;
    }

	//
	// Specific Constants
	//

	public class SmartCardInterfaceModes
	{
		public const int SC_MODE_TRANS = 1;
		public const int SC_MODE_BLOCK = 2;
		public const int SC_MODE_APDU = 4;
		public const int SC_MODE_XML = 8;
	}

	public class SmartCardIsoEmvModes
	{
		public const int SC_CMODE_ISO = 1;
		public const int SC_CMODE_EMV = 2;
	}

	public class SmartCardTransmissionProtocols
	{
		public const int SC_CTRANS_PROTOCOL_T0 = 1;
		public const int SC_CTRANS_PROTOCOL_T1 = 2;
	}

    #endregion

    #region Version 1.2

    //
    // Event Polling
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class SmartCardRWEvent
    {
        [DataMember]
        public DataEvent DataEvent { get; set; }
        [DataMember]
        public DirectIOEvent DirectIOEvent { get; set; }
        [DataMember]
        public ErrorEvent ErrorEvent { get; set; }
        [DataMember]
        public OutputCompleteEvent OutputCompleteEvent { get; set; }
        [DataMember]
        public StatusUpdateEvent StatusUpdateEvent { get; set; }
        [DataMember]
        public DataContainedEvent DataContainedEvent { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class SmartCardRWEventResponse
    {
        [DataMember]
        public DataEventResponse DataEventResponse { get; set; }
        [DataMember]
        public DataContainedEventResponse DataContainedEventResponse { get; set; }
        [DataMember]
        public DirectIOEventResponse DirectIOEventResponse { get; set; }
        [DataMember]
        public ErrorEventResponse ErrorEventResponse { get; set; }
        [DataMember]
        public OutputCompleteEventResponse OutputCompleteEventResponse { get; set; }
        [DataMember]
        public StatusUpdateEventResponse StatusUpdateEventResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DataEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DataEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DirectIOEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int EventNumber { get; set; }
        [DataMember]
        public int Data { get; set; }
        [DataMember]
        public object Obj { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DirectIOEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DirectIOData DirectIOData { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class ErrorEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public ErrorCode ErrorCode { get; set; }
        [DataMember]
        public int ErrorCodeExtended { get; set; }
        [DataMember]
        public ErrorLocus ErrorLocus { get; set; }
        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class ErrorEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class OutputCompleteEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int OutputID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class OutputCompleteEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class StatusUpdateEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class StatusUpdateEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum ErrorLocus
    {
        [EnumMember]
        EL_INPUT,
        [EnumMember]
        EL_INPUT_DATA,
        [EnumMember]
        EL_OUTPUT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public enum ErrorResponse
    {
        [EnumMember]
        ER_CLEAR,
        [EnumMember]
        ER_CONTINUEINPUT,
        [EnumMember]
        ER_RETRY,
    }

    #endregion

    #region Version 1.3

    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/", ItemName = "PropertyName")]
    public class PropertyNameList : List<string>
    {
    }

    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/", ItemName = "Parameter")]
    public class ParameterList : Dictionary<string, object>
    {
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DataContainedEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
        [DataMember]
        public ParameterList Parameters { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DataContainedEventData
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public bool SetDataEventEnabled { get; set; }
        [DataMember]
        public bool CallClearInputProperties { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/SmartCardRW/")]
    public class DataContainedEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public bool SetDataEventEnabled { get; set; }
        [DataMember]
        public bool CallClearInputProperties { get; set; }
    }

    #endregion
}
