UNPKG

@helium/http

Version:

HTTP library for interacting with the Helium blockchain API

340 lines 12 kB
"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