UNPKG

bfx-api-node-models

Version:

Object models for usage with the Bitfinex node API

98 lines (90 loc) 2.47 kB
'use strict' const numberValidator = require('./validators/number') const amountValidator = require('./validators/amount') const priceValidator = require('./validators/price') const symbolValidator = require('./validators/symbol') const Model = require('./model') const fields = { symbol: 0, bid: 1, bidSize: 2, ask: 3, askSize: 4, dailyChange: 5, dailyChangePerc: 6, lastPrice: 7, volume: 8, high: 9, low: 10 } /** * Trading Ticker model */ class TradingTicker extends Model { /** * @param {object|Array} data - trading ticker data * @param {string} data.symbol - symbol * @param {number} data.bid - best bid * @param {number} data.bidSize - total bid size * @param {number} data.ask - best ask * @param {number} data.askSize - total ask size * @param {number} data.dailyChange - change in last 24h period * @param {number} data.dailyChangePerc - change in last 24h period as percent * @param {number} data.lastPrice - last price * @param {number} data.volume - volume in last 24h period * @param {number} data.high - highest price in last 24h period * @param {number} data.low - lowest price 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 }) } /** * Quote currency of the ticker * * @returns {string} quoteCurrency */ quote () { return (this.symbol || '').substring(4) } /** * Base currency of the ticker * * @returns {string} baseCurrency */ base () { return (this.symbol || '').substring(1, 4) } /** * Validates a given trading ticker instance * * @param {object[]|object|PublicTrade[]|PublicTrade|Array} data - instance to validate * @returns {string} error - null if instance is valid */ static validate (data) { return super.validate({ data, fields, validators: { symbol: symbolValidator, bid: priceValidator, bidSize: amountValidator, ask: priceValidator, askSize: amountValidator, dailyChange: numberValidator, dailyChangePerc: numberValidator, lastPrice: priceValidator, volume: numberValidator, high: priceValidator, low: priceValidator } }) } } module.exports = TradingTicker