contract EscrowBase {

    mapping(bytes32 => bool) internal _saltWithEscrow2flagMapping;

    /// @notice Gets balance locked on escrow.
    /// @param _tradeRecordId identifier of escrow record
    /// @param _seller who will mainly deposit to escrow
    /// @param _buyer who will eventually is going to receive payment
    /// @return currency symbol
    /// @return currence balance on escrow
    function getBalanceOf(
        bytes32 _tradeRecordId,
        address _seller,
        address _buyer
    )
    external
    view
    returns (bytes32, uint)
    {
        bytes32 _escrowHash = _getEscrowHash(_tradeRecordId, _seller, _buyer);
        return (_getEscrowSymbol(_escrowHash), _getEscrowValue(_escrowHash));
    }

    /// @notice  Hashes the values and returns the escrow hash.
    /// @param _tradeRecordId identifier of escrow record
	/// @param _seller who will mainly deposit to escrow
	/// @param _buyer who will eventually is going to receive payment
    /// @return returns escrow hash
    function _getEscrowHash(
        bytes32 _tradeRecordId,
        address _seller,
        address _buyer
    )
    internal
    pure
    returns (bytes32)
    {
        return keccak256(abi.encodePacked(_tradeRecordId, _seller, _buyer));
    }

    function _getEncodedSaltWithEscrowHash(uint _salt, bytes32 _escrowHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(_salt, _escrowHash));
    }

    function _getEscrowExists(bytes32 _escrowHash) internal view returns (bool);

    function _getEscrowDisputed(bytes32 _escrowHash) internal view returns (bool);

    function _getEscrowSymbol(bytes32 _escrowHash) internal view returns (bytes32);

    function _getEscrowValue(bytes32 _escrowHash) internal view returns (uint);

    function _getEscrowArbiter(bytes32 _escrowHash) internal view returns (address);
}
function getBalanceOf(
    bytes32 _tradeRecordId,
    address _seller,
    address _buyer
)
external
view
returns (bytes32, uint)
{
    bytes32 _escrowHash = _getEscrowHash(_tradeRecordId, _seller, _buyer);
    return (_getEscrowSymbol(_escrowHash), _getEscrowValue(_escrowHash));
}

/// @notice Gets balance locked on escrow.
/// @param _tradeRecordId identifier of escrow record
/// @param _seller who will mainly deposit to escrow
/// @param _buyer who will eventually is going to receive payment
/// @return currency symbol
/// @return currence balance on escrow