minter-js-sdk
Version:
JS SDK for Minter Blockchain
77 lines (70 loc) • 2.5 kB
JavaScript
;
var minterjsTx = require('minterjs-tx');
var minterjsUtil = require('minterjs-util');
var utils = require('../utils.js');
/**
* @param {object} txData
* @param {Array<number|string>} txData.coins - list of coin id
* @param {number|string} txData.valueToSell
* @param {number|string} [txData.minimumValueToBuy=0]
* @param {TxOptions} [options]
* @constructor
*/
function SellPoolTxData(_ref) {
var coins = _ref.coins,
valueToSell = _ref.valueToSell,
_ref$minimumValueToBu = _ref.minimumValueToBuy,
minimumValueToBuy = _ref$minimumValueToBu === void 0 ? 0 : _ref$minimumValueToBu;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!options.disableValidation) {
utils.validateUintArray(coins, 'coins');
utils.validateAmount(valueToSell, 'valueToSell');
utils.validateAmount(minimumValueToBuy, 'minimumValueToBuy');
}
this.coins = coins;
this.valueToSell = valueToSell;
this.minimumValueToBuy = minimumValueToBuy;
this.txData = new minterjsTx.TxDataSellSwapPool({
coins: coins.map(function (coin) {
return utils.integerToHexString(coin);
}),
valueToSell: "0x".concat(minterjsUtil.convertToPip(valueToSell, 'hex')),
minimumValueToBuy: "0x".concat(minterjsUtil.convertToPip(minimumValueToBuy, 'hex'))
});
utils.proxyNestedTxData(this);
}
/**
* @param {object} txData
* @param {Array<Buffer>} txData.coins
* @param {Buffer|string} txData.valueToSell
* @param {Buffer|string} txData.minimumValueToBuy
* @param {TxOptions} [options]
* @return {SellPoolTxData}
*/
SellPoolTxData.fromBufferFields = function fromBufferFields(_ref2) {
var coins = _ref2.coins,
valueToSell = _ref2.valueToSell,
minimumValueToBuy = _ref2.minimumValueToBuy;
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');
}
*/
return new SellPoolTxData({
coins: coins.map(function (item) {
return utils.bufferToInteger(item);
}),
valueToSell: utils.dataPipToAmount(valueToSell),
minimumValueToBuy: utils.dataPipToAmount(minimumValueToBuy)
}, options);
};
/**
* @param {Buffer|string} data
* @return {SellPoolTxData}
*/
SellPoolTxData.fromRlp = function fromRlp(data) {
return SellPoolTxData.fromBufferFields(new minterjsTx.TxDataSellSwapPool(data));
};
module.exports = SellPoolTxData;