package jpos;

import jpos.events.*;

public interface CashChangerControl12 extends BaseControl
{
    // Capabilities
    public boolean getCapDiscrepancy() throws JposException;
    public boolean getCapEmptySensor() throws JposException;
    public boolean getCapFullSensor() throws JposException;
    public boolean getCapNearEmptySensor() throws JposException;
    public boolean getCapNearFullSensor() throws JposException;

    // Properties
    public boolean getAsyncMode() throws JposException;
    public void    setAsyncMode(boolean asyncMode) throws JposException;
    public int     getAsyncResultCode() throws JposException;
    public int     getAsyncResultCodeExtended() throws JposException;
    public String  getCurrencyCashList() throws JposException;
    public String  getCurrencyCode() throws JposException;
    public void    setCurrencyCode(String currencyCode) throws JposException;
    public String  getCurrencyCodeList() throws JposException;
    public int     getCurrentExit() throws JposException;
    public void    setCurrentExit(int currentExit) throws JposException;
    public int     getDeviceExits() throws JposException;
    public int     getDeviceStatus() throws JposException;
    public String  getExitCashList() throws JposException;
    public int     getFullStatus() throws JposException;

    // Methods
    public void    dispenseCash(String cashCounts) throws JposException;
    public void    dispenseChange(int amount) throws JposException;
    public void    readCashCounts(String[] pCashCounts,
                       boolean[] pDiscrepancy) throws JposException;

    // Event listener methods
    public void    addDirectIOListener(DirectIOListener l);
    public void    removeDirectIOListener(DirectIOListener l);
    public void    addStatusUpdateListener(StatusUpdateListener l);
    public void    removeStatusUpdateListener(StatusUpdateListener l);
}