chore: replace imports to point to lamassu-coins module

This commit is contained in:
Sérgio Salgado 2020-12-29 17:30:05 +00:00 committed by Josh Harvey
parent 70495deb67
commit 3423e2ddd0
30 changed files with 230 additions and 175 deletions

View file

@ -0,0 +1,46 @@
const common = require('../../common/bitstamp')
const { utils } = require('lamassu-coins')
// const coinUtils = require('../../../coin-utils')
function buy (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade('buy', account, cryptoAtoms, fiatCode, cryptoCode)
}
function sell (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade('sell', account, cryptoAtoms, fiatCode, cryptoCode)
}
function handleErrors (data) {
if (!data.reason || !data.reason.__all__) return data
const err = new Error(data.reason.__all__[0])
if (data.reason.__all__[0].indexOf('Minimum order size is') === 0) {
err.name = 'orderTooSmall'
}
throw err
}
function trade (type, account, cryptoAtoms, _fiatCode, cryptoCode) {
const fiatCode = _fiatCode === 'USD' ? 'USD' : 'EUR'
try {
const market = common.buildMarket(fiatCode, cryptoCode)
const options = {amount: utils.toUnit(cryptoAtoms, cryptoCode).toFixed(8)}
return common.authRequest(account, '/' + type + '/market/' + market, options)
.catch(e => {
if (e.response) handleErrors(e.response.data)
throw e
})
.then(handleErrors)
} catch (e) {
return Promise.reject(e)
}
}
module.exports = {
buy,
sell
}

View file

@ -0,0 +1,46 @@
const common = require('../../common/itbit')
const { utils } = require('lamassu-coins')
// const coinUtils = require('../../../coin-utils')
exports.buy = function (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade('buy', account, cryptoAtoms, fiatCode, cryptoCode)
}
exports.sell = function (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade('sell', account, cryptoAtoms, fiatCode, cryptoCode)
}
function trade (type, account, cryptoAtoms, fiatCode, cryptoCode) {
try {
const instrument = common.buildMarket(fiatCode, cryptoCode)
const cryptoAmount = utils.toUnit(cryptoAtoms, cryptoCode)
return calculatePrice(type, instrument, cryptoAmount)
.then(price => {
const args = {
side: type,
type: 'limit',
currency: cryptoCode,
amount: cryptoAmount.toFixed(4),
price: price.toFixed(2),
instrument: instrument
}
return common.authRequest(account, 'POST', '/wallets/' + account.walletId + '/orders', args)
})
} catch (e) {
return Promise.reject(e)
}
}
function calculatePrice (type, tickerSymbol, amount) {
return common.request('GET', '/markets/' + tickerSymbol + '/order_book')
.then(orderBook => {
const book = type == 'buy' ? 'asks' : 'bids'
let collected = 0.0
for (const entry of orderBook[book]) {
collected += parseFloat(entry[1])
if (collected >= amount) return parseFloat(entry[0])
}
throw new Error('Insufficient market depth')
})
}

View file

@ -0,0 +1,45 @@
// Note: Using DeX3/npm-kraken-api to adjust timeout time
const Kraken = require('kraken-api')
const _ = require('lodash/fp')
const common = require('../../common/kraken')
const { utils } = require('lamassu-coins')
// const coinUtils = require('../../../coin-utils')
var PAIRS = common.PAIRS
module.exports = {buy, sell}
function buy (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade(account, 'buy', cryptoAtoms, fiatCode, cryptoCode)
}
function sell (account, cryptoAtoms, fiatCode, cryptoCode) {
return trade(account, 'sell', cryptoAtoms, fiatCode, cryptoCode)
}
function trade (account, type, cryptoAtoms, fiatCode, cryptoCode) {
const kraken = new Kraken(account.apiKey, account.privateKey, {timeout: 30000})
const amount = utils.toUnit(cryptoAtoms, cryptoCode)
const amountStr = amount.toFixed(6)
const pair = _.includes(fiatCode, ['USD', 'EUR'])
? PAIRS[cryptoCode][fiatCode]
: PAIRS[cryptoCode]['EUR']
var orderInfo = {
pair,
type,
ordertype: 'market',
volume: amountStr,
expiretm: '+60'
}
return new Promise((resolve, reject) => {
kraken.api('AddOrder', orderInfo, (error, response) => {
if (error) return reject(error)
return resolve()
})
})
}