minter-js-sdk
Version:
JS SDK for Minter Blockchain
68 lines (62 loc) • 1.99 kB
JavaScript
;
var minterjsTx = require('minterjs-tx');
var minterjsUtil = require('minterjs-util');
var send = require('./send.js');
var utils = require('../utils.js');
/**
* @param {object} txData
* @param {Array} txData.list
* @param {TxOptions} [options]
* @constructor
*/
function MultisendTxData(_ref) {
var list = _ref.list;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!options.disableValidation) {
if (!Array.isArray(list)) {
throw new TypeError('Field `list` is not an array');
}
list.forEach(function (item, index) {
try {
utils.validateAddress(item.to, "list[".concat(index, "].to"));
utils.validateUint(item.coin, "list[".concat(index, "].coin"));
utils.validateAmount(item.value, "list[".concat(index, "].value"));
} catch (error) {
throw new Error("Field `list` contains invalid item at index ".concat(index, ". ").concat(error.message));
}
});
}
this.list = list;
this.txData = new minterjsTx.TxDataMultisend({
list: list.map(function (item) {
return {
to: minterjsUtil.toBuffer(item.to),
coin: utils.integerToHexString(item.coin),
value: "0x".concat(minterjsUtil.convertToPip(item.value, 'hex'))
};
})
});
utils.proxyNestedTxData(this);
}
/**
* @param {Array<Buffer>} list
* @param {TxOptions} [options]
* @return {MultisendTxData}
*/
MultisendTxData.fromBufferFields = function fromBufferFields(_ref2) {
var list = _ref2.list;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new MultisendTxData({
list: list.map(function (item) {
return send.fromRlp(item);
})
}, options);
};
/**
* @param {Buffer|string} data
* @return {MultisendTxData}
*/
MultisendTxData.fromRlp = function fromRlp(data) {
return MultisendTxData.fromBufferFields(new minterjsTx.TxDataMultisend(data));
};
module.exports = MultisendTxData;