bfx-api-node-models
Version:
Object models for usage with the Bitfinex node API
108 lines (100 loc) • 2.83 kB
JavaScript
'use strict'
const numberValidator = require('./validators/number')
const amountValidator = require('./validators/amount')
const symbolValidator = require('./validators/symbol')
const priceValidator = require('./validators/price')
const boolValidator = require('./validators/bool')
const Model = require('./model')
const fields = {
symbol: 0,
frr: 1,
bid: 2,
bidSize: 3,
bidPeriod: 4,
ask: 5,
askSize: 6,
askPeriod: 7,
dailyChange: 8,
dailyChangePerc: 9,
lastPrice: 10,
volume: 11,
high: 12,
low: 13
}
/**
* Funding Ticker model
*/
class FundingTicker extends Model {
/**
* @param {object|Array} data - funding ticker data
* @param {string} data.symbol - symbol
* @param {number|boolean} data.frr - current FRR
* @param {number} data.bid - best bid
* @param {number} data.bidSize - total bid amount
* @param {number} data.bidPeriod - bid period
* @param {number} data.ask - best ask
* @param {number} data.askSize - total ask amount
* @param {number} data.askPeriod - ask period
* @param {number} data.dailyChange - net 24h period change
* @param {number} data.dailyChangePerc - net 24h period change as percent
* @param {number} data.lastPrice - last price
* @param {number} data.volume - total volume in last 24h period
* @param {number} data.high - highest rate in last 24h period
* @param {number} data.low - lowest rate in last 24h period
*/
constructor (data = {}) {
super({ data, fields })
}
/**
* @param {object[]|object|Array[]|Array} data - data to convert to POJO
* @returns {object} pojo
*/
static unserialize (data) {
return super.unserialize({ data, fields })
}
/**
* Get the quote currency for the ticker.
*
* @returns {string} quoteCurrency
*/
quote () {
return this.symbol.substring(4)
}
/**
* Get the base currency for the ticker.
*
* @returns {string} baseCurrency
*/
base () {
return this.symbol.substring(1, 4)
}
/**
* Validates a given funding ticker instance
*
* @param {object[]|object|FundingTicker[]|FundingTicker|Array} data - instance to validate
* @returns {string} error - null if instance is valid
*/
static validate (data) {
return super.validate({
data,
fields,
validators: {
symbol: symbolValidator,
frr: boolValidator,
bid: priceValidator,
bidSize: amountValidator,
bidPeriod: numberValidator,
ask: priceValidator,
askSize: amountValidator,
askPeriod: numberValidator,
dailyChange: numberValidator,
dailyChangePerc: numberValidator,
lastPrice: priceValidator,
volume: numberValidator,
high: priceValidator,
low: priceValidator
}
})
}
}
module.exports = FundingTicker