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

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

        //
        // Common Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetColor", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetColorResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetColor(string ConsumerID, int Color);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetConcurrentMICR", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetConcurrentMICRResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetConcurrentMICR(string ConsumerID, bool ConcurrentMICR);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetContrast", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetContrastResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetContrast(string ConsumerID, int Contrast);

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetDocumentHeight", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetDocumentHeightResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetDocumentHeight(string ConsumerID, int DocumentHeight);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetDocumentWidth", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetDocumentWidthResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetDocumentWidth(string ConsumerID, int DocumentWidth);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetFileIndex", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetFileIndexResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetFileIndex(string ConsumerID, int FileIndex);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetImageData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetImageDataResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        byte[] GetImageData(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetImageFormat", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetImageFormatResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetImageFormat(string ConsumerID, int ImageFormat);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetImageMemoryStatus", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetImageMemoryStatusResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        ImageMemoryStatus GetImageMemoryStatus(string ConsumerID);

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetMapMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetMapModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        MapMode GetMapMode(string ConsumerID);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetQuality", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/SetQualityResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void SetQuality(string ConsumerID, int Quality);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetQualityList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/GetQualityListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        QualityList GetQualityList(string ConsumerID);

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

        //
        // Common Methods
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Methods
        //

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/ClearImage", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/ClearImageResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void ClearImage(string ConsumerID, CheckImageClear By);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/DefineCropArea", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/DefineCropAreaResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void DefineCropArea(string ConsumerID, int CropAreaID, int X, int Y, int CX, int CY);

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/RetrieveImage", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/RetrieveImageResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void RetrieveImage(string ConsumerID, int CropAreaID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/RetrieveMemory", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/RetrieveMemoryResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void RetrieveMemory(string ConsumerID, CheckImageLocate By);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/StoreImage", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/StoreImageResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/UposException", Name = "UposException")]
        void StoreImage(string ConsumerID, int CropAreaID);

        #endregion

        #region Version 1.2

        //
        // Session Management
        //

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

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

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

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

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

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

        //
        // Device Control
        // 

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

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

        //
        // Event Polling
        //

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

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

        #endregion

        #region Version 1.3

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

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

        #endregion
    }

    #region Version 1.1

    //
    // Common Data Types
    //

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

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

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

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

    //
    // Common Enumerations
    //

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

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

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

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

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

    //
    // Specific Enumerations
    //

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum CheckColors
    {
        [EnumMember]
        Color16,
        [EnumMember]
        Color256,
        [EnumMember]
        Full,
        [EnumMember]
        GrayScale,
        [EnumMember]
        Mono,
    }
    */
    public class CheckColors
    {
        public const int CHK_CCL_MONO = 1;
        public const int CHK_CCL_GRAYSCALE = 2;
        public const int CHK_CCL_16 = 4;
        public const int CHK_CCL_256 = 8;
        public const int CHK_CCL_FULL = 16;
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum CheckImageClear
    {
        [EnumMember]
        CHK_CLR_ALL,
        [EnumMember]
        CHK_CLR_BY_FILEID,
        [EnumMember]
        CHK_CLR_BY_FILEINDEX,
        [EnumMember]
        CHK_CLR_BY_IMAGETAGDATA,
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum CheckImageFormats
    {
        [EnumMember]
        Bmp,
        [EnumMember]
        Gif,
        [EnumMember]
        Jpeg,
        [EnumMember]
        Native,
        [EnumMember]
        Tiff,
    }
    */
    public class CheckImageFormats
    {
        public const int CHK_CIF_NATIVE = 1;
        public const int CHK_CIF_TIFF = 2;
        public const int CHK_CIF_BMP = 4;
        public const int CHK_CIF_JPEG = 8;
        public const int CHK_CIF_GIF = 16;
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum CheckImageLocate
    {
        [EnumMember]
        CHK_LOCATE_BY_FILEID,
        [EnumMember]
        CHK_LOCATE_BY_FILEINDEX,
        [EnumMember]
        CHK_LOCATE_BY_IMAGETAGDATA,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum ImageMemoryStatus
    {
        [EnumMember]
        CHK_IMS_EMPTY,
        [EnumMember]
        CHK_IMS_OK,
        [EnumMember]
        CHK_IMS_FULL,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/CheckScanner/")]
    public enum MapMode
    {
        [EnumMember]
        CHK_MM_DOTS,
        [EnumMember]
        CHK_MM_TWIPS,
        [EnumMember]
        CHK_MM_ENGLISH,
        [EnumMember]
        CHK_MM_METRIC,
    }

    //
    // Constants
    //

    /*
    public class Constants
    {
        public const int AutomaticContrast = -1;
        public const int CropAreaBottom = -1;
        public const int CropAreaEntireImage = -1;
        public const int CropAreaResetAll = -2;
        public const int CropAreaRight = -1;
        public const int ExtendedErrorCheck = 202;
        public const int ExtendedErrorFirmwareBadFile = 281;
        public const int ExtendedErrorNoCheck = 201;
        public const int ExtendedErrorNoRoom = 203;
        public const int ExtendedErrorStatistics = 280;
        public const int ExtendedErrorStatisticsDependency = 282;
        public const int GetRawImageData = 1000;
        public const string StatisticChecksScannedCount = "ChecksScannedCount";
        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 StatusPowerOff = 2002;
        public const int StatusPowerOffline = 2003;
        public const int StatusPowerOffOffline = 2004;
        public const int StatusPowerOnline = 2001;
        public const int StatusScanComplete = 11;
        public const int StatusUpdateFirmwareComplete = 2200;
        public const int StatusUpdateFirmwareCompleteDeviceNotRestored = 2205;
        public const int StatusUpdateFirmwareFailedDeviceNeedsFirmware = 2203;
        public const int StatusUpdateFirmwareFailedDeviceOk = 2201;
        public const int StatusUpdateFirmwareFailedDeviceUnknown = 2204;
        public const int StatusUpdateFirmwareFailedDeviceUnrecoverable = 2202;
        public const int StatusUpdateFirmwareProgress = 2100;
        public const int WaitForever = -1;
    }
    */

    public class Command
    {
        public const int GetRawImageData = 1000;
    }

    public class Contrast
    {
        public const int CHK_AUTOMATIC_CONTRAST = -1;
    }

    public class CropArea
    {
        public const int CHK_CROP_AREA_BOTTOM = -1;
        public const int CHK_CROP_AREA_ENTIRE_IMAGE = -1;
        public const int CHK_CROP_AREA_RESET_ALL = -2;
        public const int CHK_CROP_AREA_RIGHT = -1;
    }

    public class ExtendedError
    {
        public const int ECHK_NOCHECK = 201;
        public const int ECHK_CHECK = 202;
        public const int ECHK_NOROOM = 203;
        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 ChecksScannedCount = "ChecksScannedCount";
        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/CheckScanner/")]
    public class CheckScannerEvent
    {
        [DataMember]
        public DataEvent DataEvent { get; set; }
        [DataMember]
        public DirectIOEvent DirectIOEvent { get; set; }
        [DataMember]
        public ErrorEvent ErrorEvent { get; set; }
        //[DataMember]
        //public OutputCompleteEvent OutputCompleteEvent { get; set; }
        [DataMember]
        public StatusUpdateEvent StatusUpdateEvent { get; set; }
        [DataMember]
        public DataContainedEvent DataContainedEvent { get; set; }
    }

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

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

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

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

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

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

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



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

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

    #endregion
}
