UNPKG

airgap-coin-lib

Version:

The airgap-coin-lib is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.

521 lines 23.6 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var assert_1 = require("../../../../../../utils/assert"); var SubstrateAddress_1 = require("../../account/SubstrateAddress"); var SCALEDecoder_1 = require("../../scale/SCALEDecoder"); var SCALEAccountId_1 = require("../../scale/type/SCALEAccountId"); var SCALEArray_1 = require("../../scale/type/SCALEArray"); var SCALECompactInt_1 = require("../../scale/type/SCALECompactInt"); var SCALEEnum_1 = require("../../scale/type/SCALEEnum"); var SCALEInt_1 = require("../../scale/type/SCALEInt"); var SubstratePayee_1 = require("../../staking/SubstratePayee"); var SubstrateTransaction_1 = require("../SubstrateTransaction"); var SubstrateTransactionMethod_1 = require("./SubstrateTransactionMethod"); var SubstrateTransactionMethodArgsFactory = /** @class */ (function () { function SubstrateTransactionMethodArgsFactory(network, args) { this.network = network; this.args = args; } SubstrateTransactionMethodArgsFactory.create = function (network, type, args) { // tslint:disable-next-line: switch-default switch (type) { case SubstrateTransaction_1.SubstrateTransactionType.TRANSFER: assert_1.assertFields('transfer', args, 'to', 'value'); return new TransferArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.BOND: assert_1.assertFields('bond', args, 'controller', 'value', 'payee'); return new BondArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.UNBOND: assert_1.assertFields('unbond', args, 'value'); return new UnbondArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.REBOND: assert_1.assertFields('rebond', args, 'value'); return new RebondArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.BOND_EXTRA: assert_1.assertFields('bondExtra', args, 'value'); return new BondExtraArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED: assert_1.assertFields('withdrawUnbonded', args, 'slashingSpansNumber'); return new WithdrawUnbondedArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.NOMINATE: assert_1.assertFields('nominate', args, 'targets'); return new NominateArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION: return new StopNominatingArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.COLLECT_PAYOUT: assert_1.assertFields('collectPayout', args, 'eraIndex', 'validators'); return new PayoutStakersArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.SET_PAYEE: assert_1.assertFields('setPayee', args, 'payee'); return new SetPayeeArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.SET_CONTROLLER: assert_1.assertFields('setController', args, 'controller'); return new SetControllerArgsFactory(network, args); case SubstrateTransaction_1.SubstrateTransactionType.SUBMIT_BATCH: assert_1.assertFields('submitBatch', args, 'calls'); return new SubmitBatchArgsFactory(network, args); } }; return SubstrateTransactionMethodArgsFactory; }()); exports.SubstrateTransactionMethodArgsFactory = SubstrateTransactionMethodArgsFactory; var SubstrateTransactionMethodArgsDecoder = /** @class */ (function () { function SubstrateTransactionMethodArgsDecoder() { } SubstrateTransactionMethodArgsDecoder.create = function (type) { // tslint:disable-next-line: switch-default switch (type) { case SubstrateTransaction_1.SubstrateTransactionType.TRANSFER: return new TransferArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.BOND: return new BondArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.UNBOND: return new UnbondArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.REBOND: return new RebondArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.BOND_EXTRA: return new BondExtraArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED: return new WithdrawUnbondedArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.NOMINATE: return new NominateArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION: return new StopNominatingArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.COLLECT_PAYOUT: return new PayoutStakersArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.SET_PAYEE: return new SetPayeeArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.SET_CONTROLLER: return new SetControllerArgsDecoder(); case SubstrateTransaction_1.SubstrateTransactionType.SUBMIT_BATCH: return new SubmitBatchArgsDecoder(); } }; SubstrateTransactionMethodArgsDecoder.prototype.decode = function (network, raw) { var decoder = new SCALEDecoder_1.SCALEDecoder(network, raw); return this._decode(decoder); }; return SubstrateTransactionMethodArgsDecoder; }()); exports.SubstrateTransactionMethodArgsDecoder = SubstrateTransactionMethodArgsDecoder; var TransferArgsFactory = /** @class */ (function (_super) { __extends(TransferArgsFactory, _super); function TransferArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } TransferArgsFactory.prototype.createFields = function () { return [ ['destination', SCALEAccountId_1.SCALEAccountId.from(this.args.to, this.network)], ['value', SCALECompactInt_1.SCALECompactInt.from(this.args.value)] ]; }; TransferArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { to: [SubstrateAddress_1.SubstrateAddress.from(_this.args.to, _this.network).toString()], amount: _this.args.value.toString() } ]; }; }; return TransferArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var TransferArgsDecoder = /** @class */ (function (_super) { __extends(TransferArgsDecoder, _super); function TransferArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } TransferArgsDecoder.prototype._decode = function (decoder) { var destination = decoder.decodeNextAccountId(); var value = decoder.decodeNextCompactInt(); return { bytesDecoded: destination.bytesDecoded + value.bytesDecoded, decoded: { to: destination.decoded.toString(), value: value.decoded.value } }; }; return TransferArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var BondArgsFactory = /** @class */ (function (_super) { __extends(BondArgsFactory, _super); function BondArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } BondArgsFactory.prototype.createFields = function () { return [ ['controller', SCALEAccountId_1.SCALEAccountId.from(this.args.controller, this.network)], ['value', SCALECompactInt_1.SCALECompactInt.from(this.args.value)], ['payee', SCALEEnum_1.SCALEEnum.from(this.args.payee)] ]; }; BondArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { to: [SubstrateAddress_1.SubstrateAddress.from(_this.args.controller, _this.network).toString()], amount: _this.args.value.toString() } ]; }; }; return BondArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var BondArgsDecoder = /** @class */ (function (_super) { __extends(BondArgsDecoder, _super); function BondArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } BondArgsDecoder.prototype._decode = function (decoder) { var controller = decoder.decodeNextAccountId(); var value = decoder.decodeNextCompactInt(); var payee = decoder.decodeNextEnum(function (value) { return SubstratePayee_1.SubstratePayee[SubstratePayee_1.SubstratePayee[value]]; }); return { bytesDecoded: controller.bytesDecoded + value.bytesDecoded + payee.bytesDecoded, decoded: { controller: controller.decoded.toString(), value: value.decoded.value, payee: payee.decoded.value } }; }; return BondArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var UnbondArgsFactory = /** @class */ (function (_super) { __extends(UnbondArgsFactory, _super); function UnbondArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } UnbondArgsFactory.prototype.createFields = function () { return [['value', SCALECompactInt_1.SCALECompactInt.from(this.args.value)]]; }; UnbondArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { amount: _this.args.value.toString() } ]; }; }; return UnbondArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var UnbondArgsDecoder = /** @class */ (function (_super) { __extends(UnbondArgsDecoder, _super); function UnbondArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } UnbondArgsDecoder.prototype._decode = function (decoder) { var value = decoder.decodeNextCompactInt(); return { bytesDecoded: value.bytesDecoded, decoded: { value: value.decoded.value } }; }; return UnbondArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var RebondArgsFactory = /** @class */ (function (_super) { __extends(RebondArgsFactory, _super); function RebondArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } RebondArgsFactory.prototype.createFields = function () { return [['value', SCALECompactInt_1.SCALECompactInt.from(this.args.value)]]; }; RebondArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { amount: _this.args.value.toString() } ]; }; }; return RebondArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var RebondArgsDecoder = /** @class */ (function (_super) { __extends(RebondArgsDecoder, _super); function RebondArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } RebondArgsDecoder.prototype._decode = function (decoder) { var value = decoder.decodeNextCompactInt(); return { bytesDecoded: value.bytesDecoded, decoded: { value: value.decoded.value } }; }; return RebondArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var BondExtraArgsFactory = /** @class */ (function (_super) { __extends(BondExtraArgsFactory, _super); function BondExtraArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } BondExtraArgsFactory.prototype.createFields = function () { return [['value', SCALECompactInt_1.SCALECompactInt.from(this.args.value)]]; }; BondExtraArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { amount: _this.args.value.toString() } ]; }; }; return BondExtraArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var BondExtraArgsDecoder = /** @class */ (function (_super) { __extends(BondExtraArgsDecoder, _super); function BondExtraArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } BondExtraArgsDecoder.prototype._decode = function (decoder) { var value = decoder.decodeNextCompactInt(); return { bytesDecoded: value.bytesDecoded, decoded: { value: value.decoded.value } }; }; return BondExtraArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var WithdrawUnbondedArgsFactory = /** @class */ (function (_super) { __extends(WithdrawUnbondedArgsFactory, _super); function WithdrawUnbondedArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } WithdrawUnbondedArgsFactory.prototype.createFields = function () { return [['slashingSpansNumber', SCALEInt_1.SCALEInt.from(this.args.slashingSpansNumber, 32)]]; }; WithdrawUnbondedArgsFactory.prototype.createToAirGapTransactionParts = function () { return function () { return []; }; }; return WithdrawUnbondedArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var WithdrawUnbondedArgsDecoder = /** @class */ (function (_super) { __extends(WithdrawUnbondedArgsDecoder, _super); function WithdrawUnbondedArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } WithdrawUnbondedArgsDecoder.prototype._decode = function (decoder) { var slashingSpansNumber = decoder.decodeNextInt(32); return { bytesDecoded: slashingSpansNumber.bytesDecoded, decoded: { slashingSpansNumber: slashingSpansNumber.decoded.toNumber() } }; }; return WithdrawUnbondedArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var NominateArgsFactory = /** @class */ (function (_super) { __extends(NominateArgsFactory, _super); function NominateArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } NominateArgsFactory.prototype.createFields = function () { var _this = this; return [['targets', SCALEArray_1.SCALEArray.from(this.args.targets.map(function (target) { return SCALEAccountId_1.SCALEAccountId.from(target, _this.network); }))]]; }; NominateArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { to: _this.args.targets.map(function (target) { return SubstrateAddress_1.SubstrateAddress.from(target, _this.network).toString(); }) } ]; }; }; return NominateArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var NominateArgsDecoder = /** @class */ (function (_super) { __extends(NominateArgsDecoder, _super); function NominateArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } NominateArgsDecoder.prototype._decode = function (decoder) { var targets = decoder.decodeNextArray(SCALEAccountId_1.SCALEAccountId.decode); return { bytesDecoded: targets.bytesDecoded, decoded: { targets: targets.decoded.elements.map(function (target) { return target.toString(); }) } }; }; return NominateArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var StopNominatingArgsFactory = /** @class */ (function (_super) { __extends(StopNominatingArgsFactory, _super); function StopNominatingArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } StopNominatingArgsFactory.prototype.createFields = function () { return []; }; StopNominatingArgsFactory.prototype.createToAirGapTransactionParts = function () { return function () { return []; }; }; return StopNominatingArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var StopNominatingArgsDecoder = /** @class */ (function (_super) { __extends(StopNominatingArgsDecoder, _super); function StopNominatingArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } StopNominatingArgsDecoder.prototype._decode = function (decoder) { return { bytesDecoded: 0, decoded: {} }; }; return StopNominatingArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var PayoutStakersArgsFactory = /** @class */ (function (_super) { __extends(PayoutStakersArgsFactory, _super); function PayoutStakersArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } PayoutStakersArgsFactory.prototype.createFields = function () { return [ ['validatorStash', SCALEAccountId_1.SCALEAccountId.from(this.args.validator, this.network)], ['era', SCALEInt_1.SCALEInt.from(this.args.era, 32)] ]; }; PayoutStakersArgsFactory.prototype.createToAirGapTransactionParts = function () { return function () { return []; }; }; return PayoutStakersArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var PayoutStakersArgsDecoder = /** @class */ (function (_super) { __extends(PayoutStakersArgsDecoder, _super); function PayoutStakersArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } PayoutStakersArgsDecoder.prototype._decode = function (decoder) { var validatorStash = decoder.decodeNextAccountId(); var era = decoder.decodeNextInt(32); return { bytesDecoded: era.bytesDecoded + validatorStash.bytesDecoded, decoded: { validator: validatorStash.decoded.address, era: era.decoded.value, } }; }; return PayoutStakersArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var SetPayeeArgsFactory = /** @class */ (function (_super) { __extends(SetPayeeArgsFactory, _super); function SetPayeeArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } SetPayeeArgsFactory.prototype.createFields = function () { return [['payee', SCALEEnum_1.SCALEEnum.from(this.args.payee)]]; }; SetPayeeArgsFactory.prototype.createToAirGapTransactionParts = function () { return function () { return []; }; }; return SetPayeeArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var SetPayeeArgsDecoder = /** @class */ (function (_super) { __extends(SetPayeeArgsDecoder, _super); function SetPayeeArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } SetPayeeArgsDecoder.prototype._decode = function (decoder) { var payee = decoder.decodeNextEnum(function (value) { return SubstratePayee_1.SubstratePayee[SubstratePayee_1.SubstratePayee[value]]; }); return { bytesDecoded: payee.bytesDecoded, decoded: { payee: payee.decoded.value } }; }; return SetPayeeArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var SetControllerArgsFactory = /** @class */ (function (_super) { __extends(SetControllerArgsFactory, _super); function SetControllerArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } SetControllerArgsFactory.prototype.createFields = function () { return [['controller', SCALEAccountId_1.SCALEAccountId.from(this.args.controller, this.network)]]; }; SetControllerArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return [ { to: [SubstrateAddress_1.SubstrateAddress.from(_this.args.controller, _this.network).toString()] } ]; }; }; return SetControllerArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var SetControllerArgsDecoder = /** @class */ (function (_super) { __extends(SetControllerArgsDecoder, _super); function SetControllerArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } SetControllerArgsDecoder.prototype._decode = function (decoder) { var controller = decoder.decodeNextAccountId(); return { bytesDecoded: controller.bytesDecoded, decoded: { controller: controller.decoded.toString() } }; }; return SetControllerArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); var SubmitBatchArgsFactory = /** @class */ (function (_super) { __extends(SubmitBatchArgsFactory, _super); function SubmitBatchArgsFactory() { return _super !== null && _super.apply(this, arguments) || this; } SubmitBatchArgsFactory.prototype.createFields = function () { return [['calls', SCALEArray_1.SCALEArray.from(this.args.calls)]]; }; SubmitBatchArgsFactory.prototype.createToAirGapTransactionParts = function () { var _this = this; return function () { return _this.args.calls.map(function (call) { return call.toAirGapTransactionParts(); }).reduce(function (flatten, toFlatten) { return flatten.concat(toFlatten); }, []); }; }; return SubmitBatchArgsFactory; }(SubstrateTransactionMethodArgsFactory)); var SubmitBatchArgsDecoder = /** @class */ (function (_super) { __extends(SubmitBatchArgsDecoder, _super); function SubmitBatchArgsDecoder() { return _super !== null && _super.apply(this, arguments) || this; } SubmitBatchArgsDecoder.prototype._decode = function (decoder) { // temporary fixed type var calls = decoder.decodeNextArray(function (network, hex) { return SubstrateTransactionMethod_1.SubstrateTransactionMethod.decode(network, SubstrateTransaction_1.SubstrateTransactionType.COLLECT_PAYOUT, hex); }); return { bytesDecoded: calls.bytesDecoded, decoded: { calls: calls.decoded.elements } }; }; return SubmitBatchArgsDecoder; }(SubstrateTransactionMethodArgsDecoder)); //# sourceMappingURL=SubstrateTransactionMethodArgs.js.map