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

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

        //
        // Common Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetAmount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetAmountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetAmount(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetAmount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetAmountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetAmount(string ConsumerID, decimal Amount);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetAsyncMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetAsyncModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetAsyncMode(string ConsumerID, bool AsyncMode);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetBalance", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetBalanceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetBalance(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetBalanceOfPoint", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetBalanceOfPointResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetBalanceOfPoint(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetCardServiceList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetCardServiceListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        CardServiceList GetCardServiceList(string ConsumerID);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetDetectionControl", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetDetectionControlResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetDetectionControl(string ConsumerID, bool DetectionControl);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetDetectionStatus", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetDetectionStatusResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        DetectionState GetDetectionStatus(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetExpirationDate", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetExpirationDateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        DateTime GetExpirationDate(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetLastUsedDate", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetLastUsedDateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        DateTime GetLastUsedDate(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetLogStatus", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetLogStatusResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        LogState GetLogStatus(string ConsumerID);

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPoint", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPointResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetPoint(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetPoint", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetPointResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetPoint(string ConsumerID, decimal Point);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetReaderWriterServiceList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetReaderWriterServiceListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        ReaderWriterServiceList GetReaderWriterServiceList(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetSettledAmount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetSettledAmountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetSettledAmount(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetSettledPoint", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetSettledPointResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        decimal GetSettledPoint(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetVoucherID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetVoucherIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        VoucherID GetVoucherID(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetVoucherIDList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetVoucherIDListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        VoucherIDList GetVoucherIDList(string ConsumerID);

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

        //
        // Common Methods
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Methods
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessLog", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessLogResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AccessLog(string ConsumerID, int SequenceNumber, TransactionLogType Type, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/ActivateService", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/ActivateServiceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        EVRWResult ActivateService(string ConsumerID, int Data, object Obj);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/BeginDetection", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/BeginDetectionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void BeginDetection(string ConsumerID, BeginDetectionType Type, int Timeout);

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

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

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/TransactionAccess", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/TransactionAccessResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void TransactionAccess(string ConsumerID, TransactionControl Control);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UpdateKey", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UpdateKeyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        EVRWResult UpdateKey(string ConsumerID, int Data, object Obj);

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

        #endregion

        #region Version 1.2

        //
        // Session Management
        //

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

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

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

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

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

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

        //
        // Device Control
        // 

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

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

        //
        // Event Polling
        //

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

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

        #endregion

        #region Version 1.3

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPINEntry", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPINEntryResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        PINEntryType GetPINEntry(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetPINEntry", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetPINEntryResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetPINEntry(string ConsumerID, PINEntryType PINEntry);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetTrainingModeState", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetTrainingModeStateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        TrainingModeState GetTrainingModeState(string ConsumerID);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/RetrieveResultInformation", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/RetrieveResultInformationResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]

        string RetrieveResultInformation(string ConsumerID, string Name, string Value);
        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetParameterInformation", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/SetParameterInformationResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void SetParameterInformation(string ConsumerID, string Name, string Value);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetServiceType", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetServiceTypeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        ServiceType GetServiceType(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessDataResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        AccessDataData AccessData(string ConsumerID, int DataType, int Data, object Obj);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/ActivateEVService", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/ActivateEVServiceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        ActivateEVServiceData ActivateEVService(string ConsumerID, int Data, object Obj);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/CloseDailyEVService", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/CloseDailyEVServiceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        CloseDailyEVServiceData CloseDailyEVService(string ConsumerID, int Data, object Obj);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/DeactivateEVService", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/DeactivateEVServiceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        DeactivateEVServiceData DeactivateEVService(string ConsumerID, int Data, object Obj);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/OpenDailyEVService", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/OpenDailyEVServiceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        OpenDailyEVServiceData OpenDailyEVService(string ConsumerID, int Data, object Obj);

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UpdateData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UpdateDataResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        UpdateDataData UpdateData(string ConsumerID, int DataType, int Data, object Obj);

        #endregion

        #region Version 1.4

        //
        // Specific Properties
        //

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

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetCapDailyLog", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetCapDailyLogResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        CATLogs GetCapDailyLog(string ConsumerID);

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPaymentCondition", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPaymentConditionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        PaymentCondition GetPaymentCondition(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPaymentMedia", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetPaymentMediaResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        PaymentMedia GetPaymentMedia(string ConsumerID);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetTransactionType", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/GetTransactionTypeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        CreditTransactionType GetTransactionType(string ConsumerID);

        //
        // Specific Methods
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessDailyLog", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AccessDailyLogResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AccessDailyLog(string ConsumerID, int SequenceNumber, CATLogs Type, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeCompletion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeCompletionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizeCompletion(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizePreSales", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizePreSalesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizePreSales(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeRefund", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeRefundResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizeRefund(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeSales", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeSalesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizeSales(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeVoid", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeVoidResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizeVoid(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeVoidPreSales", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/AuthorizeVoidPreSalesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void AuthorizeVoidPreSales(string ConsumerID, int SequenceNumber, decimal Amount, decimal TaxOthers, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/CashDeposit", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/CashDepositResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/UposException", Name = "UposException")]
        void CashDeposit(string ConsumerID, int SequenceNumber, decimal Amount, int Timeout);

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

        #endregion
    }

    #region Version 1.1

    //
    // Common Data Types
    //

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class Statistic
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Value { get; set; }
    }

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

    //
    // Common Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public enum ControlState
    {
        [EnumMember]
        S_CLOSED,
        [EnumMember]
        S_IDLE,
        [EnumMember]
        S_BUSY,
        [EnumMember]
        S_ERROR,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public enum HealthCheckLevel
    {
        [EnumMember]
        CH_INTERNAL,
        [EnumMember]
        CH_EXTERNAL,
        [EnumMember]
        CH_INTERACTIVE,
    }

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    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
    //

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

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public class VoucherID
    {
        [DataMember]
        public int Count { get; set; }
        [DataMember]
        public string TicketID { get; set; }
    }

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

    //
    // Specific Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum BeginDetectionType
    {
        [EnumMember]
        EVRW_BD_ANY,
        [EnumMember]
        EVRW_BD_SPECIFIC,
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum CardDetectionControl
    {
        [EnumMember]
        Application,
        [EnumMember]
        Device,
    }
    */
    public class CardDetectionControl
    {
        public const int EVRW_CDC_RWCONTROL = 1;
        public const int EVRW_CDC_APPLICATIONCONTROL = 2;
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum CardDetectionTypes
    {
        [EnumMember]
        Capture,
        [EnumMember]
        Detect,
        [EnumMember]
        Entry,
    }
    */
    public class CardDetectionTypes
    {
        public const int EVRW_CCS_ENTRY = 1;
        public const int EVRW_CCS_DETECT = 2;
        public const int EVRW_CCS_CAPTURE = 4;
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum DetectionState
    {
        [EnumMember]
        EVRW_DS_NOCARD,
        [EnumMember]
        EVRW_DS_DETECTED,
        [EnumMember]
        EVRW_DS_ENTERED,
        [EnumMember]
        EVRW_DS_CAPTURED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum LogState
    {
        [EnumMember]
        EVRW_LS_OK,
        [EnumMember]
        EVRW_LS_NEARFULL,
        [EnumMember]
        EVRW_LS_FULL,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum TransactionControl
    {
        [EnumMember]
        EVRW_TA_TRANSACTION,
        [EnumMember]
        EVRW_TA_NORMAL,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum TransactionLogType
    {
        [EnumMember]
        EVRW_AL_REPORTING,
        [EnumMember]
        EVRW_AL_SETTLEMENT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum PINEntryType
    {
        [EnumMember]
        EVRW_PIN_ENTRY_UNKNOWN,
        [EnumMember]
        EVRW_PIN_ENTRY_NONE,
        [EnumMember]
        EVRW_PIN_ENTRY_INTERNAL,
        [EnumMember]
        EVRW_PIN_ENTRY_EXTERNAL,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum ServiceType
    {
        [EnumMember]
        EVRW_ST_UNSPECIFIED,
        [EnumMember]
        EVRW_ST_ELECTRONIC_MONEY,
        [EnumMember]
        EVRW_ST_POINT,
        [EnumMember]
        EVRW_ST_VOUCHER,
        [EnumMember]
        EVRW_ST_MEMBERSHIP,
        [EnumMember]
        EVRW_ST_CAT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum TrainingModeState
    {
        [EnumMember]
        EVRW_TM_UNKNOWN,
        [EnumMember]
        EVRW_TM_FALSE,
        [EnumMember]
        EVRW_TM_TRUE,
    }

    //
    // Constants
    //

    /*
    public class Constants
    {
        public const int ExtendedErrorCenterError = 203;
        public const int ExtendedErrorCommandError = 204;
        public const int ExtendedErrorCommunicationError = 206;
        public const int ExtendedErrorDailyLogOverflow = 208;
        public const int ExtendedErrorDeficient = 209;
        public const int ExtendedErrorFirmwareBadFile = 281;
        public const int ExtendedErrorLogOverflow = 207;
        public const int ExtendedErrorNoCard = 201;
        public const int ExtendedErrorOverdeposit = 210;
        public const int ExtendedErrorRelease = 202;
        public const int ExtendedErrorReset = 205;
        public const int ExtendedErrorStatistics = 280;
        public const int ExtendedErrorStatisticsDependency = 282;
        public const string StatisticCommunicationErrorCount = "CommunicationErrorCount";
        public const string StatisticDeviceCategory = "DeviceCategory";
        public const string StatisticFirmwareRevision = "FirmwareRevision";
        public const string StatisticHoursPoweredCount = "HoursPoweredCount";
        public const string StatisticInstallationDate = "InstallationDate";
        public const string StatisticInterface = "Interface";
        public const string StatisticManufactureDate = "ManufactureDate";
        public const string StatisticManufacturerName = "ManufacturerName";
        public const string StatisticMechanicalRevision = "MechanicalRevision";
        public const string StatisticModelName = "ModelName";
        public const string StatisticSerialNumber = "SerialNumber";
        public const string StatisticUnifiedPOSVersion = "UnifiedPOSVersion";
        public const int WaitForever = -1;
    }
    */

    public class ExtendedError
    {
        public const int EEVRW_NOCARD = 201;
        public const int EEVRW_RELEASE = 202;
        public const int EEVRW_CENTERERROR = 203;
        public const int EEVRW_COMMANDERROR = 204;
        public const int EEVRW_RESET = 205;
        public const int EEVRW_COMMUNICATIONERROR = 206;
        public const int EEVRW_LOGOVERFLOW = 207;
        public const int EEVRW_DAILYLOGOVERFLOW = 208;
        public const int EEVRW_DEFICIENT = 209;
        public const int EEVRW_OVERDEPOSIT = 210;
        public const int ESTATS_ERROR = 280;
        public const int EFIRMWARE_BAD_FILE = 281;
        public const int ESTATS_DEPENDENCY = 282;
    }

    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;
    }

    #endregion

    #region Version 1.2

    //
    // Event Polling
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public class ElectronicValueRWEvent
    {
        [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 TransitionEvent TransitionEvent { get; set; }
        [DataMember]
        public DataContainedEvent DataContainedEvent { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public class ElectronicValueRWEventResponse
    {
        [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; }
        [DataMember]
        public TransitionEvent TransitionEvent { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class DataEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class DirectIOEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DirectIOData DirectIOData { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class ErrorEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class OutputCompleteEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class StatusUpdateEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/", ItemName = "PropertyName")]
    public class PropertyNameList : List<string>
    {
    }



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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    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/ElectronicValueRW/")]
    public class DataContainedEventResponse
    {
        [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/ElectronicValueRW/")]
    public class TransitionEvent
    {
        [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 Str { get; set; }
    }

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public class TransitionData
    {
        [DataMember]
        public int Data { get; set; }
        [DataMember]
        public string Str { get; set; }
    }


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

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

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

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

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

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

    #endregion

    #region Version 1.4

    //
    // Specific Data Types
    //

    //
    // Specific Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum CATLogs
    {
        [EnumMember]
        EVRW_DL_NONE,
        [EnumMember]
        EVRW_DL_REPORTING,
        [EnumMember]
        EVRW_DL_SETTLEMENT,
        [EnumMember]
        EVRW_DL_REPORTING_SETTLEMENT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum CreditTransactionType
    {
        [EnumMember]
        EVRW_TRANSACTION_SALES,
        [EnumMember]
        EVRW_TRANSACTION_VOID,
        [EnumMember]
        EVRW_TRANSACTION_REFUND,
        [EnumMember]
        EVRW_TRANSACTION_COMPLETION,
        [EnumMember]
        EVRW_TRANSACTION_PRESALES,
        [EnumMember]
        EVRW_TRANSACTION_CHECKCARD,
        [EnumMember]
        EVRW_TRANSACTION_VOIDPRESALES,
        [EnumMember]
        EVRW_TRANSACTION_CASHDEPOSIT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum PaymentCondition
    {
        [EnumMember]
        EVRW_PAYMENT_LUMP,
        [EnumMember]
        EVRW_PAYMENT_BONUS_1,
        [EnumMember]
        EVRW_PAYMENT_BONUS_2,
        [EnumMember]
        EVRW_PAYMENT_BONUS_3,
        [EnumMember]
        EVRW_PAYMENT_BONUS_4,
        [EnumMember]
        EVRW_PAYMENT_BONUS_5,
        [EnumMember]
        EVRW_PAYMENT_INSTALLMENT_1,
        [EnumMember]
        EVRW_PAYMENT_INSTALLMENT_2,
        [EnumMember]
        EVRW_PAYMENT_INSTALLMENT_3,
        [EnumMember]
        EVRW_PAYMENT_BONUS_COMBINATION_1,
        [EnumMember]
        EVRW_PAYMENT_BONUS_COMBINATION_2,
        [EnumMember]
        EVRW_PAYMENT_BONUS_COMBINATION_3,
        [EnumMember]
        EVRW_PAYMENT_BONUS_COMBINATION_4,
        [EnumMember]
        EVRW_PAYMENT_REVOLVING,
        [EnumMember]
        EVRW_PAYMENT_DEBIT,
        [EnumMember]
        EVRW_PAYMENT_ELECTRONIC_MONEY,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/ElectronicValueRW/")]
    public enum PaymentMedia
    {
        [EnumMember]
        EVRW_MEDIA_UNSPECIFIED,
        [EnumMember]
        EVRW_MEDIA_CREDIT,
        [EnumMember]
        EVRW_MEDIA_DEBIT,
        [EnumMember]
        EVRW_MEDIA_ELECTRONIC_MONEY,
    }

    #endregion
}
