@helium/http
Version:
HTTP library for interacting with the Helium blockchain API
39 lines • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const camelcase_keys_1 = __importDefault(require("camelcase-keys"));
const currency_1 = require("@helium/currency");
const DataModel_1 = __importDefault(require("./DataModel"));
function processTxn(transaction) {
if (transaction.status === 'received')
return null;
const rawTxn = transaction.txn;
const txn = (0, camelcase_keys_1.default)(rawTxn);
switch (transaction.type) {
case 'payment_v1':
return Object.assign(Object.assign({}, txn), { amount: new currency_1.Balance(txn.amount, currency_1.CurrencyType.default) });
case 'payment_v2':
return Object.assign(Object.assign({}, txn), { payments: txn.payments.map((p) => (Object.assign(Object.assign({}, p), { amount: new currency_1.Balance(p.amount, currency_1.CurrencyType.default) }))), totalAmount: new currency_1.Balance(txn.payments.reduce((sum, { amount }) => sum + amount, 0), currency_1.CurrencyType.default) });
default:
return txn;
}
}
class PendingTransaction extends DataModel_1.default {
constructor(transaction) {
super();
this.type = transaction.type;
this.txn = processTxn(transaction);
this.status = transaction.status;
this.failedReason = transaction.failed_reason;
this.hash = transaction.hash;
this.createdAt = transaction.created_at;
this.updatedAt = transaction.updated_at;
}
get data() {
return this;
}
}
exports.default = PendingTransaction;
//# sourceMappingURL=PendingTransaction.js.map