UNPKG

sth-ts

Version:

An SmartHoldem API wrapper, written in TypeScript to interact with SmartHoldem blockchain.

163 lines 7.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Observable_1 = require("rxjs/Observable"); var json_typescript_mapper_1 = require("json-typescript-mapper"); var model = require("../model/Transaction"); var BlockApi_1 = require("./BlockApi"); var Key_1 = require("../core/Key"); var Tx_1 = require("../core/Tx"); /** Transaction related API calls. */ var TransactionApi = /** @class */ (function () { function TransactionApi(http) { this.http = http; } /** * Transaction used to transfer amounts to specific address. */ TransactionApi.prototype.createTransaction = function (params) { var _this = this; return Observable_1.Observable.create(function (observer) { if (!Key_1.PublicKey.validateAddress(params.recipientId, _this.http.network)) { observer.error('Wrong recipientId'); } BlockApi_1.default.networkFees(_this.http.network).subscribe(function (blocks) { var fees = blocks.fees; var data = { amount: params.amount, fee: fees.send, recipientId: params.recipientId, timestamp: params.timestamp, type: model.TransactionType.SendSth, vendorField: params.vendorField, }; var tx = new Tx_1.default(data, _this.http.network, params.passphrase, params.secondPassphrase); data = tx.generate(); var typedTx = json_typescript_mapper_1.deserialize(model.Transaction, data); observer.next(typedTx); observer.complete(); }, function (e) { return observer.error(e); }); }); }; /** * Transaction used to vote for a chosen Delegate. */ TransactionApi.prototype.createVote = function (params) { var _this = this; return Observable_1.Observable.create(function (observer) { BlockApi_1.default.networkFees(_this.http.network).subscribe(function (blocks) { var fees = blocks.fees; var updown = model.VoteType[params.type] === 'Add' ? '+' : '-'; var data = { asset: { votes: [updown + params.delegatePublicKey], }, fee: fees.vote, type: model.TransactionType.Vote, vendorField: params.vendorField, }; var tx = new Tx_1.default(data, _this.http.network, params.passphrase, params.secondPassphrase); tx.setAddress(); data = tx.generate(); var typedTx = json_typescript_mapper_1.deserialize(model.Transaction, data); typedTx.asset = data.asset; observer.next(typedTx); observer.complete(); }, function (e) { return observer.error(e); }); }); }; /** * Transaction used to register as a Delegate. */ TransactionApi.prototype.createDelegate = function (params) { var _this = this; return Observable_1.Observable.create(function (observer) { if (params.username.length > 20) { observer.error('Delegate name is too long, 20 characters maximum'); } BlockApi_1.default.networkFees(_this.http.network).subscribe(function (blocks) { var fees = blocks.fees; var data = { asset: { delegate: { publicKey: params.publicKey, username: params.username, }, }, fee: fees.delegate, type: model.TransactionType.CreateDelegate, vendorField: params.vendorField, }; var tx = new Tx_1.default(data, _this.http.network, params.passphrase, params.secondPassphrase); data = tx.generate(); var typedTx = json_typescript_mapper_1.deserialize(model.Transaction, data); typedTx.asset = data.asset; observer.next(typedTx); observer.complete(); }, function (e) { return observer.error(e); }); }); }; /** * Transaction used to create second passphrase. */ TransactionApi.prototype.createSignature = function (passphrase, secondPassphrase, vendorField) { var _this = this; return Observable_1.Observable.create(function (observer) { BlockApi_1.default.networkFees(_this.http.network).subscribe(function (blocks) { var fees = blocks.fees; var data = { asset: {}, fee: fees.secondsignature, type: model.TransactionType.SecondSignature, vendorField: vendorField, }; var tx = new Tx_1.default(data, _this.http.network, passphrase, secondPassphrase); tx.setAssetSignature(); data = tx.generate(); var typedTx = json_typescript_mapper_1.deserialize(model.Transaction, data); typedTx.asset = tx.transaction.asset; observer.next(typedTx); observer.complete(); }, function (e) { return observer(e); }); }); }; /** * Post transaction to broadcast */ TransactionApi.prototype.post = function (transaction, peer) { var params = { transactions: [transaction] }; if (peer) { var url = "http://" + peer.ip + ":" + peer.port + "/peer/transactions"; return this.http.postNative(url, params, model.TransactionPostResponse); } return this.http.post('/peer/transactions', params, model.TransactionPostResponse); }; /** * Transaction matched by id. */ TransactionApi.prototype.get = function (id) { var params = { id: id }; return this.http.get('/transactions/get', params, model.TransactionResponse); }; /** * Get unconfirmed transaction by id. */ TransactionApi.prototype.getUnconfirmed = function (id) { var params = { id: id }; return this.http.get('/transactions/unconfirmed/get', params, model.TransactionResponse); }; /** * Transactions list matched by provided parameters. */ TransactionApi.prototype.list = function (params) { return this.http.get('/transactions', params, model.TransactionResponse); }; /** * Transactions unconfirmed list matched by provided parameters. */ TransactionApi.prototype.listUnconfirmed = function (params) { return this.http.get('/transactions/unconfirmed', params, model.TransactionResponse); }; return TransactionApi; }()); exports.default = TransactionApi; //# sourceMappingURL=TransactionApi.js.map