﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://www.nrf-arts.org/UnifiedPOS/BillDispenser/" elementFormDefault="qualified" targetNamespace="http://www.nrf-arts.org/UnifiedPOS/BillDispenser/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="GetCapCompareFirmwareVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapCompareFirmwareVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapCompareFirmwareVersionResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="UposException">
    <xs:sequence>
      <xs:element minOccurs="0" name="ErrorCode" type="tns:ErrorCode" />
      <xs:element minOccurs="0" name="ErrorCodeExtended" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UposException" nillable="true" type="tns:UposException" />
  <xs:simpleType name="ErrorCode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="E_CLOSED" />
      <xs:enumeration value="E_CLAIMED" />
      <xs:enumeration value="E_NOTCLAIMED" />
      <xs:enumeration value="E_NOSERVICE" />
      <xs:enumeration value="E_DISABLED" />
      <xs:enumeration value="E_ILLEGAL" />
      <xs:enumeration value="E_NOHARDWARE" />
      <xs:enumeration value="E_OFFLINE" />
      <xs:enumeration value="E_NOEXIST" />
      <xs:enumeration value="E_EXISTS" />
      <xs:enumeration value="E_FAILURE" />
      <xs:enumeration value="E_TIMEOUT" />
      <xs:enumeration value="E_BUSY" />
      <xs:enumeration value="E_EXTENDED" />
      <xs:enumeration value="E_DEPRECATED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="ErrorCode" nillable="true" type="tns:ErrorCode" />
  <xs:element name="GetCapPowerReporting">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapPowerReportingResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapPowerReportingResult" type="tns:PowerReporting" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerReporting">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PR_NONE" />
      <xs:enumeration value="PR_STANDARD" />
      <xs:enumeration value="PR_ADVANCED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerReporting" nillable="true" type="tns:PowerReporting" />
  <xs:element name="GetCapStatisticsReporting">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapStatisticsReportingResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapStatisticsReportingResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateFirmware">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateFirmwareResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapUpdateFirmwareResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapUpdateStatisticsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapUpdateStatisticsResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCheckHealthText">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCheckHealthTextResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCheckHealthTextResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetClaimed">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetClaimedResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetClaimedResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceEnabled">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceEnabledResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceEnabledResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceEnabled">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="DeviceEnabled" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetDeviceEnabledResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreezeEvents">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreezeEventsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetFreezeEventsResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetFreezeEvents">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FreezeEvents" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetFreezeEventsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerNotify">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerNotifyResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPowerNotifyResult" type="tns:PowerNotification" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerNotification">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PN_DISABLED" />
      <xs:enumeration value="PN_ENABLED" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerNotification" nillable="true" type="tns:PowerNotification" />
  <xs:element name="SetPowerNotify">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="PowerNotify" type="tns:PowerNotification" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetPowerNotifyResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerState">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPowerStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPowerStateResult" type="tns:PowerState" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PowerState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PS_UNKNOWN" />
      <xs:enumeration value="PS_ONLINE" />
      <xs:enumeration value="PS_OFF" />
      <xs:enumeration value="PS_OFFLINE" />
      <xs:enumeration value="PS_OFF_OFFLINE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="PowerState" nillable="true" type="tns:PowerState" />
  <xs:element name="GetState">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetStateResult" type="tns:ControlState" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="ControlState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="S_CLOSED" />
      <xs:enumeration value="S_IDLE" />
      <xs:enumeration value="S_BUSY" />
      <xs:enumeration value="S_ERROR" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="ControlState" nillable="true" type="tns:ControlState" />
  <xs:element name="GetDeviceControlDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceControlDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceControlVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceControlVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="UposVersion">
    <xs:sequence>
      <xs:element minOccurs="0" name="Build" type="xs:int" />
      <xs:element minOccurs="0" name="Major" type="xs:int" />
      <xs:element minOccurs="0" name="Minor" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UposVersion" nillable="true" type="tns:UposVersion" />
  <xs:element name="GetDeviceServiceDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceServiceDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceServiceVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceServiceVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceDescription">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceDescriptionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPhysicalDeviceDescriptionResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceName">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPhysicalDeviceNameResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetPhysicalDeviceNameResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapDiscrepancy">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapDiscrepancyResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapDiscrepancyResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapEmptySensor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapEmptySensorResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapEmptySensorResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapJamSensor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapJamSensorResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapJamSensorResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapNearEmptySensor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCapNearEmptySensorResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCapNearEmptySensorResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncMode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncModeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAsyncModeResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetAsyncMode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="AsyncMode" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetAsyncModeResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncResultCode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncResultCodeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAsyncResultCodeResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncResultCodeExtended">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsyncResultCodeExtendedResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAsyncResultCodeExtendedResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrencyCashList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrencyCashListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCurrencyCashListResult" nillable="true" type="tns:CashUnits" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CashUnits">
    <xs:sequence>
      <xs:element minOccurs="0" name="Bills" nillable="true" type="tns:BillList" />
      <xs:element minOccurs="0" name="Coins" nillable="true" type="tns:CoinList" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CashUnits" nillable="true" type="tns:CashUnits" />
  <xs:complexType name="BillList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Bill" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="BillList" nillable="true" type="tns:BillList" />
  <xs:complexType name="CoinList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Coin" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CoinList" nillable="true" type="tns:CoinList" />
  <xs:element name="GetCurrencyCode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrencyCodeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCurrencyCodeResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrencyCode">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CurrencyCode" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrencyCodeResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrencyCodeList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrencyCodeListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCurrencyCodeListResult" nillable="true" type="tns:CurrencyCodeList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CurrencyCodeList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="CurrencyCode" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CurrencyCodeList" nillable="true" type="tns:CurrencyCodeList" />
  <xs:element name="GetCurrentExit">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrentExitResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetCurrentExitResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrentExit">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CurrentExit" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetCurrentExitResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceExits">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceExitsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceExitsResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceStatus">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetDeviceStatusResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDeviceStatusResult" type="tns:CashChangerStatus" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="CashChangerStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="BDSP_STATUS_OK" />
      <xs:enumeration value="BDSP_STATUS_EMPTY" />
      <xs:enumeration value="BDSP_STATUS_NEAREMPTY" />
      <xs:enumeration value="BDSP_STATUS_JAM" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="CashChangerStatus" nillable="true" type="tns:CashChangerStatus" />
  <xs:element name="GetExitCashList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetExitCashListResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetExitCashListResult" nillable="true" type="tns:CashUnits" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Claim">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Timeout" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClaimResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="Release">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CheckHealth">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Level" type="tns:HealthCheckLevel" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="HealthCheckLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CH_INTERNAL" />
      <xs:enumeration value="CH_EXTERNAL" />
      <xs:enumeration value="CH_INTERACTIVE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="HealthCheckLevel" nillable="true" type="tns:HealthCheckLevel" />
  <xs:element name="CheckHealthResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DirectIO">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="Command" type="xs:int" />
        <xs:element minOccurs="0" name="Data" type="xs:int" />
        <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DirectIOResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="DirectIOResult" nillable="true" type="tns:DirectIOData" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="DirectIOData">
    <xs:sequence>
      <xs:element minOccurs="0" name="Data" type="xs:int" />
      <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOData" nillable="true" type="tns:DirectIOData" />
  <xs:element name="CompareFirmwareVersion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FirmwareFileName" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CompareFirmwareVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="CompareFirmwareVersionResult" type="tns:CompareFirmwareResult" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="CompareFirmwareResult">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CFV_FIRMWARE_OLDER" />
      <xs:enumeration value="CFV_FIRMWARE_SAME" />
      <xs:enumeration value="CFV_FIRMWARE_NEWER" />
      <xs:enumeration value="CFV_FIRMWARE_DIFFERENT" />
      <xs:enumeration value="CFV_FIRMWARE_UNKNOWN" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="CompareFirmwareResult" nillable="true" type="tns:CompareFirmwareResult" />
  <xs:element name="ResetStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="StatisticList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Statistic" nillable="true" type="tns:Statistic" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatisticList" nillable="true" type="tns:StatisticList" />
  <xs:complexType name="Statistic">
    <xs:sequence>
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Value" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Statistic" nillable="true" type="tns:Statistic" />
  <xs:element name="ResetStatisticsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="RetrieveStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RetrieveStatisticsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="RetrieveStatisticsResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateFirmware">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="FirmwareFileName" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateFirmwareResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateStatistics">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="StatisticsBuffer" nillable="true" type="tns:StatisticList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateStatisticsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="AdjustCashCounts">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CashCounts" nillable="true" type="tns:CashCountList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CashCountList">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="CashCount" nillable="true" type="tns:CashCount" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CashCountList" nillable="true" type="tns:CashCountList" />
  <xs:complexType name="CashCount">
    <xs:sequence>
      <xs:element minOccurs="0" name="Count" type="xs:int" />
      <xs:element minOccurs="0" name="NominalValue" type="xs:int" />
      <xs:element minOccurs="0" name="Type" type="tns:CashCountType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CashCount" nillable="true" type="tns:CashCount" />
  <xs:simpleType name="CashCountType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Bill" />
      <xs:enumeration value="Coin" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="CashCountType" nillable="true" type="tns:CashCountType" />
  <xs:element name="AdjustCashCountsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="DispenseCash">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="CashCounts" nillable="true" type="tns:CashCountList" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DispenseCashResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="ReadCashCounts">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReadCashCountsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ReadCashCountsResult" nillable="true" type="tns:CashCounts" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="CashCounts">
    <xs:sequence>
      <xs:element minOccurs="0" name="Counts" nillable="true" type="tns:CashCountList" />
      <xs:element minOccurs="0" name="Discrepancy" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="CashCounts" nillable="true" type="tns:CashCounts" />
  <xs:element name="GetWSPOSVersion">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetWSPOSVersionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetWSPOSVersionResult" nillable="true" type="tns:UposVersion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GenerateConsumerID">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GenerateConsumerIDResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GenerateConsumerIDResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenSession">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="EndpointAddress" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenSessionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseSession">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseSessionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetProviderSessionTimeout">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetProviderSessionTimeoutResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetProviderSessionTimeoutResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="KeepAlive">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="KeepAliveResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenDevice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="OpenDeviceResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseDevice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CloseDeviceResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="PollForUPOSEvent">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="PollForUPOSEventResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="PollForUPOSEventResult" nillable="true" type="tns:BillDispenserEvent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="BillDispenserEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOEvent" nillable="true" type="tns:DirectIOEvent" />
      <xs:element minOccurs="0" name="StatusUpdateEvent" nillable="true" type="tns:StatusUpdateEvent" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="BillDispenserEvent" nillable="true" type="tns:BillDispenserEvent" />
  <xs:complexType name="DirectIOEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="Data" type="xs:int" />
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
      <xs:element minOccurs="0" name="EventNumber" type="xs:int" />
      <xs:element minOccurs="0" name="Obj" nillable="true" type="xs:anyType" />
      <xs:element minOccurs="0" name="Source" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="TimeStamp" type="xs:dateTime" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOEvent" nillable="true" type="tns:DirectIOEvent" />
  <xs:complexType name="StatusUpdateEvent">
    <xs:sequence>
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
      <xs:element minOccurs="0" name="Source" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Status" type="xs:int" />
      <xs:element minOccurs="0" name="TimeStamp" type="xs:dateTime" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatusUpdateEvent" nillable="true" type="tns:StatusUpdateEvent" />
  <xs:element name="SetEventResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="ConsumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="EventResponse" nillable="true" type="tns:BillDispenserEventResponse" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="BillDispenserEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOEventResponse" nillable="true" type="tns:DirectIOEventResponse" />
      <xs:element minOccurs="0" name="StatusUpdateEventResponse" nillable="true" type="tns:StatusUpdateEventResponse" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="BillDispenserEventResponse" nillable="true" type="tns:BillDispenserEventResponse" />
  <xs:complexType name="DirectIOEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="DirectIOData" nillable="true" type="tns:DirectIOData" />
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DirectIOEventResponse" nillable="true" type="tns:DirectIOEventResponse" />
  <xs:complexType name="StatusUpdateEventResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="EventID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="StatusUpdateEventResponse" nillable="true" type="tns:StatusUpdateEventResponse" />
  <xs:element name="SetEventResponseResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetEncryptedClaimedConsumerID">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetEncryptedClaimedConsumerIDResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetEncryptedClaimedConsumerIDResult" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBinaryConversion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="consumerID" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetBinaryConversionResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetBinaryConversionResult" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBinaryConversion">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="consumerID" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" name="binaryConversion" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetBinaryConversionResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
</xs:schema>