contract BlackMarketSellable {
    bool public isRatio; //Should be true if the prices used will be a Ratio, and not just a simple price, otherwise false.

    function sellToBlackMarket(uint quantity, uint price) public returns (bool success, uint numOrderCreated);
    function cancelSellToBlackMarket(uint quantity, uint price, bool continueAfterFirstMatch) public returns (bool success, uint numOrdersCanceled);
    function buyFromBlackMarket(uint quantity, uint priceLimit) public payable returns (bool success, bool partial, uint numOrdersCleared);
    function getSellOrdersBlackMarket() public view returns (uint[] memory r);
    function getSellOrdersBlackMarketComplete() public view returns (uint[] memory quantities, uint[] memory prices);
    function getMySellOrdersBlackMarketComplete() public view returns (uint[] memory quantities, uint[] memory prices);

    //Events:
    event BlackMarketOfferAvailable(uint quantity, uint price);
    event BlackMarketOfferBought(uint quantity, uint price, uint leftOver);
    event BlackMarketNoOfferForPrice(uint price);
    event BlackMarketOfferCancelled(uint quantity, uint price);
    event OrderInsufficientPayment(address indexed addr, uint expectedValue, uint valueReceived);
    event OrderInsufficientBalance(address indexed addr, uint expectedBalance, uint actualBalance);
}
// ---------------------------------------------------------------------------------------------
// Black Market Sellable token
// This will allow users to sell and buy from a black market, without knowing one another, 
// while having the assurance the other party will keep their part of the agreement.
// ---------------------------------------------------------------------------------------------
function sellToBlackMarket(uint quantity, uint price) public returns (bool success, uint numOrderCreated);

//Should be true if the prices used will be a Ratio, and not just a simple price, otherwise false.