minter-js-sdk
Version:
JS SDK for Minter Blockchain
84 lines (77 loc) • 2.8 kB
JavaScript
;
var minterjsTx = require('minterjs-tx');
var minterjsUtil = require('minterjs-util');
var utils = require('../utils.js');
/**
* @param {object} txData
* @param {number|string} txData.coinToSell - coin id
* @param {number|string} txData.coinToBuy - coin id
* @param {number|string} txData.valueToSell
* @param {number|string} txData.valueToBuy
* @param {TxOptions} [options]
* @constructor
*/
function AddLimitOrderTxData(_ref) {
var coinToSell = _ref.coinToSell,
coinToBuy = _ref.coinToBuy,
valueToSell = _ref.valueToSell,
_ref$valueToBuy = _ref.valueToBuy,
valueToBuy = _ref$valueToBuy === void 0 ? 0 : _ref$valueToBuy;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!options.disableValidation) {
utils.validateUint(coinToSell, 'coinToSell');
utils.validateUint(coinToBuy, 'coinToBuy');
utils.validateAmount(valueToSell, 'valueToSell');
utils.validateAmount(valueToBuy, 'valueToBuy');
}
this.coinToSell = coinToSell;
this.coinToBuy = coinToBuy;
this.valueToSell = valueToSell;
this.valueToBuy = valueToBuy;
this.txData = new minterjsTx.TxDataAddLimitOrder({
coinToSell: utils.integerToHexString(coinToSell),
coinToBuy: utils.integerToHexString(coinToBuy),
valueToSell: "0x".concat(minterjsUtil.convertToPip(valueToSell, 'hex')),
valueToBuy: "0x".concat(minterjsUtil.convertToPip(valueToBuy, 'hex'))
});
utils.proxyNestedTxData(this);
}
/**
* @param {object} txData
* @param {Buffer|string} txData.coinToSell
* @param {Buffer|string} txData.valueToSell
* @param {Buffer|string} txData.coinToBuy
* @param {Buffer|string} txData.valueToBuy
* @param {TxOptions} [options]
* @return {AddLimitOrderTxData}
*/
AddLimitOrderTxData.fromBufferFields = function fromBufferFields(_ref2) {
var coinToSell = _ref2.coinToSell,
valueToSell = _ref2.valueToSell,
coinToBuy = _ref2.coinToBuy,
valueToBuy = _ref2.valueToBuy;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
// @TODO should validation be done here?
/*
if (!valueToSell && valueToSell !== 0) {
throw new Error('Invalid valueToSell');
}
if (!valueToBuy && valueToBuy !== 0) {
throw new Error('Invalid valueToBuy');
}
*/
return new AddLimitOrderTxData({
coinToSell: utils.dataToInteger(coinToSell),
coinToBuy: utils.dataToInteger(coinToBuy),
valueToSell: utils.dataPipToAmount(valueToSell),
valueToBuy: utils.dataPipToAmount(valueToBuy)
}, options);
};
/**
* @param {Buffer|string} data
* @return {AddLimitOrderTxData}
*/
AddLimitOrderTxData.fromRlp = function fromRlp(data) {
return AddLimitOrderTxData.fromBufferFields(new minterjsTx.TxDataAddLimitOrder(data));
};
module.exports = AddLimitOrderTxData;