interface KULAPTradingProxy {
    // Trade event
    event Trade( ERC20 src, uint srcAmount, ERC20 dest, uint destAmount);

    /// @notice use token address ETH_TOKEN_ADDRESS for ether
    /// @dev makes a trade between src and dest token and send dest token to destAddress
    /// @param src Src token
    /// @param srcAmount amount of src tokens
    /// @param dest   Destination token
    /// @return amount of actual dest tokens
    function trade(
        ERC20 src,
        uint srcAmount,
        ERC20 dest
    )
        public
        payable
        returns(uint);
    
    function rate(ERC20 src, ERC20 dest, uint srcQty) public view returns(uint, uint);
}
function trade(
    ERC20 src,
    uint srcAmount,
    ERC20 dest
)
    public
    payable
    returns(uint);

/// @notice use token address ETH_TOKEN_ADDRESS for ether
/// @dev makes a trade between src and dest token and send dest token to destAddress
/// @param src Src token
/// @param srcAmount amount of src tokens
/// @param dest   Destination token
/// @return amount of actual dest tokens