contract dexBlueReserve{
    // insured trade function with fixed outcome
    function trade(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount) public payable returns(bool success){}
    
    // insured trade function with fixed outcome, passes additional data to the reserve
    function tradeWithData(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount, bytes32[] memory data) public payable returns(bool success){}
    
    // offer the reserve to enter a trade a a taker
    function offer(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount) public returns(bool accept){}
    
    // offer the reserve to enter a trade a a taker, passes additional data to the reserve
    function offerWithData(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount, bytes32[] memory data) public returns(bool accept){}
    
    // callback function, to inform the reserve that an offer has been accepted by the maker reserve
    function offerExecuted(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount) public{}

    // uninsured swap
    function swap(address sell_token, uint256 sell_amount, address buy_token,  uint256 min_output) public payable returns(uint256 output){}
    
    // get output amount of swap
    function getSwapOutput(address sell_token, uint256 sell_amount, address buy_token) public view returns(uint256 output){}
}
// dexBlueReserve
function offerWithData(address sell_token, uint256 sell_amount, address buy_token,  uint256 buy_amount, bytes32[] memory data) public returns(bool accept){}

// offer the reserve to enter a trade a a taker, passes additional data to the reserve