@helium/http
Version:
HTTP library for interacting with the Helium blockchain API
340 lines • 12 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenRedeemV1 = exports.SubnetworkRewardsV1 = exports.TransferHotspotV2 = exports.TransferHotspotV1 = exports.RewardsV2 = exports.RewardsV1 = exports.UnknownTransaction = exports.SecurityExchangeV1 = exports.StateChannelCloseV1 = exports.TransferValidatorStakeV1 = exports.UnstakeValidatorV1 = exports.StakeValidatorV1 = exports.PaymentV2 = exports.PaymentV1 = exports.AssertLocationV2 = exports.AssertLocationV1 = exports.TokenBurnV1 = exports.AddGatewayV1 = void 0;
/* eslint-disable no-param-reassign */
/* eslint-disable max-classes-per-file */
const camelcase_keys_1 = __importDefault(require("camelcase-keys"));
const currency_1 = require("@helium/currency");
const Challenge_1 = __importDefault(require("./Challenge"));
const DataModel_1 = __importDefault(require("./DataModel"));
class AddGatewayV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.AddGatewayV1 = AddGatewayV1;
class TokenBurnV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.TokenBurnV1 = TokenBurnV1;
class AssertLocationV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.AssertLocationV1 = AssertLocationV1;
class AssertLocationV2 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.AssertLocationV2 = AssertLocationV2;
class PaymentV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.PaymentV1 = PaymentV1;
class PaymentV2 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.PaymentV2 = PaymentV2;
class StakeValidatorV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.StakeValidatorV1 = StakeValidatorV1;
class UnstakeValidatorV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.UnstakeValidatorV1 = UnstakeValidatorV1;
class TransferValidatorStakeV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.TransferValidatorStakeV1 = TransferValidatorStakeV1;
class StateChannelCloseV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.StateChannelCloseV1 = StateChannelCloseV1;
class SecurityExchangeV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.SecurityExchangeV1 = SecurityExchangeV1;
class UnknownTransaction extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.UnknownTransaction = UnknownTransaction;
class RewardsV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.RewardsV1 = RewardsV1;
class RewardsV2 extends RewardsV1 {
}
exports.RewardsV2 = RewardsV2;
function prepareTxn(txn, { deep } = { deep: false }) {
const balanceConversions = [
{ key: 'fee', currencyType: currency_1.CurrencyType.dataCredit },
{ key: 'staking_fee', currencyType: currency_1.CurrencyType.dataCredit },
{ key: 'amount', currencyType: currency_1.CurrencyType.networkToken },
{ key: 'total_amount', currencyType: currency_1.CurrencyType.networkToken },
{ key: 'amount_to_seller', currencyType: currency_1.CurrencyType.networkToken },
{ key: 'stake', currencyType: currency_1.CurrencyType.networkToken },
{ key: 'payment_amount', currencyType: currency_1.CurrencyType.networkToken },
{ key: 'stake_amount', currencyType: currency_1.CurrencyType.networkToken },
];
balanceConversions.forEach(({ key, currencyType }) => {
if (txn[key] && typeof txn[key] === 'number') {
if (txn.token_type !== undefined) {
txn[key] = new currency_1.Balance(txn[key], currency_1.CurrencyType.fromTicker(txn.token_type));
}
else {
txn[key] = new currency_1.Balance(txn[key], currencyType);
}
}
});
return (0, camelcase_keys_1.default)(txn, { deep });
}
class TransferHotspotV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.TransferHotspotV1 = TransferHotspotV1;
class TransferHotspotV2 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.TransferHotspotV2 = TransferHotspotV2;
class SubnetworkRewardsV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.SubnetworkRewardsV1 = SubnetworkRewardsV1;
class TokenRedeemV1 extends DataModel_1.default {
constructor(data) {
super();
Object.assign(this, data);
}
get data() {
return this;
}
}
exports.TokenRedeemV1 = TokenRedeemV1;
class Transaction {
static fromJsonObject(json) {
switch (json.type) {
case 'payment_v1':
return this.toPaymentV1(json);
case 'payment_v2':
return this.toPaymentV2(json);
case 'add_gateway_v1':
return this.toAddGatewayV1(json);
case 'rewards_v1':
return this.toRewardsV1(json);
case 'rewards_v2':
return this.toRewardsV2(json);
case 'poc_receipts_v1':
return this.toPocReceiptsV1(json);
case 'poc_receipts_v2':
return this.toPocReceiptsV2(json);
case 'transfer_hotspot_v1':
return this.toTransferHotspotV1(json);
case 'transfer_hotspot_v2':
return this.toTransferHotspotV2(json);
case 'assert_location_v1':
return this.toAssertLocationV1(json);
case 'assert_location_v2':
return this.toAssertLocationV2(json);
case 'token_burn_v1':
return this.toTokenBurnV1(json);
case 'unstake_validator_v1':
return this.toUnstakeValidatorV1(json);
case 'stake_validator_v1':
return this.toStakeValidatorV1(json);
case 'transfer_validator_stake_v1':
return this.toTransferValidatorStakeV1(json);
case 'state_channel_close_v1':
return this.toStateChannelCloseV1(json);
case 'security_exchange_v1':
return this.toSecurityExchangeV1(json);
case 'subnetwork_rewards_v1':
return this.toSubnetworkRewardsV1(json);
case 'token_redeem_v1':
return this.toTokenRedeemV1(json);
default:
return this.toUnknownTransaction(json);
}
}
static toPaymentV1(json) {
return new PaymentV1(prepareTxn(json));
}
static toPaymentV2(json) {
const payments = (json.payments || []).map((p) => (Object.assign(Object.assign({}, p), { amount: new currency_1.Balance(p.amount, p.token_type === undefined || p.token_type === null
? currency_1.CurrencyType.default
: currency_1.CurrencyType.fromTicker(p.token_type)) })));
const sumAmountHnt = (json.payments || [])
.filter(((p) => p.token_type === undefined || p.token_type === 'hnt'))
.reduce((sum, { amount }) => sum + amount, 0);
const totalAmountHnt = new currency_1.Balance(sumAmountHnt, currency_1.CurrencyType.default);
const sumAmountMobile = (json.payments || [])
.filter(((p) => p.token_type === 'mobile'))
.reduce((sum, { amount }) => sum + amount, 0);
const totalAmountMobile = new currency_1.Balance(sumAmountMobile, currency_1.CurrencyType.mobile);
const sumAmountIot = (json.payments || [])
.filter(((p) => p.token_type === 'iot'))
.reduce((sum, { amount }) => sum + amount, 0);
const totalAmountIot = new currency_1.Balance(sumAmountIot, currency_1.CurrencyType.iot);
return new PaymentV2(prepareTxn(Object.assign(Object.assign({}, json), { payments,
totalAmountHnt,
totalAmountMobile,
totalAmountIot })));
}
static toAddGatewayV1(json) {
return new AddGatewayV1(prepareTxn(json));
}
static toAssertLocationV1(json) {
return new AssertLocationV1(prepareTxn(json));
}
static toAssertLocationV2(json) {
return new AssertLocationV2(prepareTxn(json));
}
static toTokenBurnV1(json) {
return new TokenBurnV1(prepareTxn(json));
}
static toUnstakeValidatorV1(json) {
return new UnstakeValidatorV1(prepareTxn(json));
}
static toStakeValidatorV1(json) {
return new StakeValidatorV1(prepareTxn(json));
}
static toTransferValidatorStakeV1(json) {
return new TransferValidatorStakeV1(prepareTxn(json));
}
static toUnknownTransaction(json) {
return new UnknownTransaction(prepareTxn(json));
}
static toPocReceiptsV1(json) {
return new Challenge_1.default(json);
}
static toPocReceiptsV2(json) {
return new Challenge_1.default(json);
}
static toTransferHotspotV1(json) {
return new TransferHotspotV1(prepareTxn(json));
}
static toTransferHotspotV2(json) {
return new TransferHotspotV2(prepareTxn(json));
}
static toStateChannelCloseV1(json) {
return new StateChannelCloseV1(prepareTxn(json, { deep: true }));
}
static toSecurityExchangeV1(json) {
return new SecurityExchangeV1(prepareTxn(json));
}
static toRewardsV1(json) {
const rewards = (json.rewards || []).map((r) => (Object.assign(Object.assign({}, r), { amount: new currency_1.Balance(r.amount, currency_1.CurrencyType.default) })));
const sumAmount = (json.rewards || []).reduce((sum, { amount }) => sum + amount, 0);
const totalAmount = new currency_1.Balance(sumAmount, currency_1.CurrencyType.default);
return new RewardsV1(prepareTxn(Object.assign(Object.assign({}, json), { rewards,
totalAmount })));
}
static toRewardsV2(json) {
return this.toRewardsV1(json);
}
static toSubnetworkRewardsV1(json) {
const currencyType = currency_1.CurrencyType.fromTicker(json.token_type);
const rewards = (json.rewards || []).map((r) => (Object.assign(Object.assign({}, r), { amount: new currency_1.Balance(r.amount, currencyType) })));
return new SubnetworkRewardsV1(prepareTxn(Object.assign(Object.assign({}, json), { rewards })));
}
static toTokenRedeemV1(json) {
return new TokenRedeemV1(prepareTxn(json));
}
}
exports.default = Transaction;
//# sourceMappingURL=Transaction.js.map