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
JavaScript
"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