btsdex
Version:
Package for work with BitShares DEX
64 lines (54 loc) • 2.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _TransactionBuilder = _interopRequireDefault(require("./TransactionBuilder"));
var _btsdexApi = require("btsdex-api");
//import { TransactionBuilder } from "bitsharesjs";
class Transaction {
static newTx(keys) {
var tx = new Transaction(keys);
return new Proxy(tx, tx);
}
constructor(_keys) {
(0, _defineProperty2.default)(this, "get", (obj, name) => {
if (obj[name]) return obj[name];
return params => {
this.add({
[name]: params
});
};
});
(0, _defineProperty2.default)(this, "add", operations => {
Object.keys(operations).forEach(key => this.tx.add_type_operation(key, operations[key]));
});
(0, _defineProperty2.default)(this, "sign", async keys => {
await this.tx.set_required_fees();
(keys ? keys : this.keys).forEach(key => this.tx.add_signer(key, key.toPublicKey().toPublicKeyString()));
});
(0, _defineProperty2.default)(this, "broadcast", async keys => {
await this.sign(keys);
return this.tx.broadcast();
});
(0, _defineProperty2.default)(this, "cost", async () => {
await this.tx.set_required_fees();
let fees = {};
this.tx.operations.forEach(op => {
fees[op[1].fee.asset_id] = fees[op[1].fee.asset_id] || 0;
fees[op[1].fee.asset_id] += +op[1].fee.amount;
});
let assets = await _btsdexApi.database.getAssets(Object.keys(fees)); //return assets.map(asset => ({asset, amount: fees[asset.id] / 10 ** asset.precision}))
return assets.reduce((obj, asset) => {
obj[asset.symbol] = fees[asset.id] / 10 ** asset.precision;
return obj;
}, {});
});
this.tx = new _TransactionBuilder.default();
this.keys = _keys;
}
}
var _default = Transaction;
exports.default = _default;