@bitgo/account-lib 2.17.2-rc.0.1 → 2.17.2-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/browser/bitgo-account-lib.min.js +1 -1
  2. package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +136 -0
  3. package/dist/package.json +10 -3
  4. package/dist/resources/dot/index.ts +2 -0
  5. package/dist/resources/dot/mainnet.ts +2 -0
  6. package/dist/resources/dot/westend.ts +2 -0
  7. package/dist/resources/trx/protobuf/tron.js~account-lib_master +31380 -0
  8. package/dist/src/coin/algo/keyExclusionBuilder.d.ts +9 -0
  9. package/dist/src/coin/algo/keyExclusionBuilder.d.ts.map +1 -0
  10. package/dist/src/coin/algo/keyExclusionBuilder.js +83 -0
  11. package/dist/src/coin/algo/utils.d.ts +39 -22
  12. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  13. package/dist/src/coin/algo/utils.js +88 -73
  14. package/dist/src/coin/baseCoin/baseTransaction.d.ts +8 -1
  15. package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -1
  16. package/dist/src/coin/baseCoin/baseTransaction.js +10 -1
  17. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  18. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +1 -1
  19. package/dist/src/coin/baseCoin/iface.d.ts +28 -0
  20. package/dist/src/coin/baseCoin/iface.d.ts.map +1 -1
  21. package/dist/src/coin/baseCoin/iface.js +1 -1
  22. package/dist/src/coin/cspr/utils.js +2 -2
  23. package/dist/src/coin/dot/errors.d.ts +8 -0
  24. package/dist/src/coin/dot/errors.d.ts.map +1 -0
  25. package/dist/src/coin/dot/errors.js +40 -0
  26. package/dist/src/coin/dot/iface.d.ts +153 -0
  27. package/dist/src/coin/dot/iface.d.ts.map +1 -0
  28. package/dist/src/coin/dot/iface.js +15 -0
  29. package/dist/src/coin/dot/index.d.ts +6 -0
  30. package/dist/src/coin/dot/index.d.ts.map +1 -1
  31. package/dist/src/coin/dot/index.js +14 -2
  32. package/dist/src/coin/dot/keyPair.d.ts +15 -2
  33. package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
  34. package/dist/src/coin/dot/keyPair.js +41 -6
  35. package/dist/src/coin/dot/stakingBuilder.d.ts +59 -0
  36. package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -0
  37. package/dist/src/coin/dot/stakingBuilder.js +157 -0
  38. package/dist/src/coin/dot/transaction.d.ts +31 -3
  39. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  40. package/dist/src/coin/dot/transaction.js +268 -7
  41. package/dist/src/coin/dot/transactionBuilder.d.ts +105 -9
  42. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  43. package/dist/src/coin/dot/transactionBuilder.js +311 -15
  44. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +12 -16
  45. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  46. package/dist/src/coin/dot/transactionBuilderFactory.js +60 -25
  47. package/dist/src/coin/dot/transferBuilder.d.ts +62 -4
  48. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  49. package/dist/src/coin/dot/transferBuilder.js +158 -44
  50. package/dist/src/coin/dot/txnSchema.d.ts +10 -0
  51. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -0
  52. package/dist/src/coin/dot/txnSchema.js +83 -0
  53. package/dist/src/coin/dot/unstakeBuilder.d.ts +38 -0
  54. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -0
  55. package/dist/src/coin/dot/unstakeBuilder.js +111 -0
  56. package/dist/src/coin/dot/utils.d.ts +69 -0
  57. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  58. package/dist/src/coin/dot/utils.js +144 -4
  59. package/dist/src/coin/dot/walletInitializationBuilder.d.ts +51 -5
  60. package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -1
  61. package/dist/src/coin/dot/walletInitializationBuilder.js +108 -45
  62. package/dist/src/coin/sol/constants.d.ts +24 -0
  63. package/dist/src/coin/sol/constants.d.ts.map +1 -0
  64. package/dist/src/coin/sol/constants.js +35 -0
  65. package/dist/src/coin/sol/iface.d.ts +55 -0
  66. package/dist/src/coin/sol/iface.d.ts.map +1 -0
  67. package/dist/src/coin/sol/iface.js +3 -0
  68. package/dist/src/coin/sol/index.d.ts +5 -0
  69. package/dist/src/coin/sol/index.d.ts.map +1 -0
  70. package/dist/src/coin/sol/index.js +29 -0
  71. package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
  72. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
  73. package/dist/src/coin/sol/instructionParamsFactory.js +99 -0
  74. package/dist/src/coin/sol/keyPair.d.ts +45 -0
  75. package/dist/src/coin/sol/keyPair.d.ts.map +1 -0
  76. package/dist/src/coin/sol/keyPair.js +128 -0
  77. package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
  78. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
  79. package/dist/src/coin/sol/solInstructionFactory.js +102 -0
  80. package/dist/src/coin/sol/transaction.d.ts +52 -0
  81. package/dist/src/coin/sol/transaction.d.ts.map +1 -0
  82. package/dist/src/coin/sol/transaction.js +345 -0
  83. package/dist/src/coin/sol/transactionBuilder.d.ts +96 -0
  84. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -0
  85. package/dist/src/coin/sol/transactionBuilder.js +316 -0
  86. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +34 -0
  87. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -0
  88. package/dist/src/coin/sol/transactionBuilderFactory.js +86 -0
  89. package/dist/src/coin/sol/transferBuilder.d.ts +26 -0
  90. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -0
  91. package/dist/src/coin/sol/transferBuilder.js +140 -0
  92. package/dist/src/coin/sol/utils.d.ts +104 -0
  93. package/dist/src/coin/sol/utils.d.ts.map +1 -0
  94. package/dist/src/coin/sol/utils.js +244 -0
  95. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +26 -0
  96. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -0
  97. package/dist/src/coin/sol/walletInitializationBuilder.js +141 -0
  98. package/dist/src/index.d.ts +4 -0
  99. package/dist/src/index.d.ts.map +1 -1
  100. package/dist/src/index.js +10 -2
  101. package/dist/src/utils/crypto.d.ts +8 -0
  102. package/dist/src/utils/crypto.d.ts.map +1 -1
  103. package/dist/src/utils/crypto.js +13 -2
  104. package/package.json +10 -3
  105. package/resources/dot/index.ts +2 -0
  106. package/resources/dot/mainnet.ts +2 -0
  107. package/resources/dot/westend.ts +2 -0
@@ -1,28 +1,124 @@
1
+ import { BaseCoin as CoinConfig, PolkadotSpecNameType } from '@bitgo/statics';
2
+ import { UnsignedTransaction } from '@substrate/txwrapper-core';
3
+ import { DecodedSignedTx, DecodedSigningPayload, TypeRegistry } from '@substrate/txwrapper-core/lib/types';
1
4
  import BigNumber from 'bignumber.js';
2
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { BaseTransactionBuilder } from '../baseCoin';
5
+ import { BaseTransactionBuilder, TransactionType } from '../baseCoin';
4
6
  import { BaseAddress, BaseKey } from '../baseCoin/iface';
7
+ import { CreateBaseTxInfo, FeeOptions, sequenceId, TxMethod, validityWindow } from './iface';
8
+ import { KeyPair } from './keyPair';
5
9
  import { Transaction } from './transaction';
6
10
  export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
7
- private _transaction;
11
+ protected _transaction: Transaction;
12
+ protected _keyPair: KeyPair;
13
+ protected _sender: string;
14
+ protected _blockNumber: number;
15
+ protected _referenceBlock: string;
16
+ protected _genesisHash: string;
17
+ protected _specVersion: number;
18
+ protected _transactionVersion: number;
19
+ protected _specName: PolkadotSpecNameType;
20
+ protected _chainName: string;
21
+ protected _nonce: number;
22
+ protected _tip?: number;
23
+ protected _eraPeriod?: number;
24
+ protected _registry: TypeRegistry;
25
+ protected _method?: TxMethod;
8
26
  constructor(_coinConfig: Readonly<CoinConfig>);
9
27
  /**
10
- * Initialize the transaction builder fields using the decoded transaction data
28
+ * Sets the address of sending account.
11
29
  *
12
- * @param {Transaction} tx the transaction data
30
+ * @param {BaseAddress} address The SS58-encoded address.
31
+ * @returns {TransactionBuilder} This transaction builder.
32
+ *
33
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
34
+ */
35
+ sender({ address }: BaseAddress): this;
36
+ /**
37
+ * The nonce for this transaction.
38
+ *
39
+ * @param {number} nonce
40
+ * @returns {TransactionBuilder} This transaction builder.
41
+ *
42
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
43
+ */
44
+ sequenceId(nonce: sequenceId): this;
45
+ /**
46
+ * The tip to increase transaction priority.
47
+ *
48
+ * @param {number | undefined} tip optional
49
+ * @returns {TransactionBuilder} This transaction builder.
50
+ *
51
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
52
+ */
53
+ fee(fee: FeeOptions): this;
54
+ /**
55
+ * The number of the checkpoint block after which the transaction is valid
56
+ *
57
+ * @param {number} blockNumber
58
+ * @returns {TransactionBuilder} This transaction builder.
59
+ *
60
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
61
+ */
62
+ validity({ firstValid, maxDuration }: validityWindow): this;
63
+ /**
64
+ * The hash of the checkpoint block.
65
+ *
66
+ * @param {number} blockHash
67
+ * @returns {TransactionBuilder} This transaction builder.
68
+ *
69
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
70
+ * @see https://wiki.polkadot.network/docs/build-protocol-info#transaction-mortality
13
71
  */
14
- initBuilder(tx: Transaction): void;
72
+ referenceBlock(referenceBlock: string): this;
73
+ /**
74
+ * The current version for transaction format.
75
+ *
76
+ * @param {number} transactionVersion
77
+ * @returns {TransactionBuilder} This transaction builder.
78
+ *
79
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
80
+ */
81
+ version(transactionVersion: number): this;
82
+ private method;
83
+ /**
84
+ * Set the network based on the configuration in the statics module
85
+ */
86
+ protected staticsConfig(): void;
15
87
  /** @inheritdoc */
16
88
  protected get transaction(): Transaction;
17
89
  /** @inheritdoc */
90
+ protected set transaction(transaction: Transaction);
91
+ protected isSigningPayload(payload: DecodedSigningPayload | DecodedSignedTx): payload is DecodedSigningPayload;
92
+ /** @inheritdoc */
93
+ protected fromImplementation(rawTransaction: string): Transaction;
94
+ /** @inheritdoc */
95
+ protected buildImplementation(): Promise<Transaction>;
96
+ protected createBaseTxInfo(): CreateBaseTxInfo;
97
+ /**
98
+ * Builds the specific transaction builder internally
99
+ * using the @substrate/txwrapper builder.
100
+ */
101
+ protected abstract buildTransaction(): UnsignedTransaction;
102
+ /**
103
+ * The transaction type.
104
+ */
105
+ protected abstract get transactionType(): TransactionType;
106
+ /** @inheritdoc */
18
107
  validateAddress(address: BaseAddress, addressFormat?: string): void;
19
108
  /** @inheritdoc */
20
- validateKey(key: BaseKey): void;
109
+ validateKey({ key }: BaseKey): void;
110
+ /**
111
+ * Validates the specific transaction builder internally
112
+ */
113
+ protected abstract validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction?: string): void;
21
114
  /** @inheritdoc */
22
- validateRawTransaction(rawTransaction: any): void;
115
+ validateRawTransaction(rawTransaction: string): void;
23
116
  /** @inheritdoc */
24
- validateTransaction(transaction?: Transaction): void;
117
+ validateTransaction(_: Transaction): void;
118
+ private validateBaseFields;
25
119
  /** @inheritdoc */
26
120
  validateValue(value: BigNumber): void;
121
+ /** @inheritdoc */
122
+ protected signImplementation({ key }: BaseKey): Transaction;
27
123
  }
28
124
  //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,OAAO,CAAC,YAAY,CAAc;gBAEtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAID,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAIjD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAItC"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilder.ts"],"names":[],"mappings":"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"}
@@ -14,55 +14,351 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
17
56
  Object.defineProperty(exports, "__esModule", { value: true });
18
57
  exports.TransactionBuilder = void 0;
58
+ var txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
59
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
60
+ var crypto_1 = require("../../utils/crypto");
19
61
  var baseCoin_1 = require("../baseCoin");
20
62
  var errors_1 = require("../baseCoin/errors");
63
+ var errors_2 = require("./errors");
64
+ var keyPair_1 = require("./keyPair");
65
+ var transaction_1 = require("./transaction");
66
+ var txnSchema_1 = require("./txnSchema");
67
+ var utils_1 = __importDefault(require("./utils"));
21
68
  var TransactionBuilder = /** @class */ (function (_super) {
22
69
  __extends(TransactionBuilder, _super);
23
70
  function TransactionBuilder(_coinConfig) {
24
- return _super.call(this, _coinConfig) || this;
71
+ var _this = _super.call(this, _coinConfig) || this;
72
+ _this._transaction = new transaction_1.Transaction(_coinConfig);
73
+ _this.staticsConfig();
74
+ return _this;
25
75
  }
26
76
  /**
27
- * Initialize the transaction builder fields using the decoded transaction data
77
+ * Sets the address of sending account.
78
+ *
79
+ * @param {BaseAddress} address The SS58-encoded address.
80
+ * @returns {TransactionBuilder} This transaction builder.
81
+ *
82
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
83
+ */
84
+ TransactionBuilder.prototype.sender = function (_a) {
85
+ var address = _a.address;
86
+ this.validateAddress({ address: address });
87
+ this._sender = address;
88
+ this._transaction.sender(address);
89
+ return this;
90
+ };
91
+ /**
92
+ * The nonce for this transaction.
93
+ *
94
+ * @param {number} nonce
95
+ * @returns {TransactionBuilder} This transaction builder.
96
+ *
97
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
98
+ */
99
+ TransactionBuilder.prototype.sequenceId = function (nonce) {
100
+ var value = new bignumber_js_1.default(nonce.value);
101
+ this.validateValue(value);
102
+ this._nonce = value.toNumber();
103
+ return this;
104
+ };
105
+ /**
106
+ * The tip to increase transaction priority.
107
+ *
108
+ * @param {number | undefined} tip optional
109
+ * @returns {TransactionBuilder} This transaction builder.
110
+ *
111
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
112
+ */
113
+ TransactionBuilder.prototype.fee = function (fee) {
114
+ if (fee.type !== 'tip') {
115
+ throw new errors_2.InvalidFeeError(fee.type, 'tip');
116
+ }
117
+ var tipBN = new bignumber_js_1.default(fee.amount);
118
+ this.validateValue(tipBN);
119
+ this._tip = tipBN.toNumber();
120
+ return this;
121
+ };
122
+ /**
123
+ * The number of the checkpoint block after which the transaction is valid
124
+ *
125
+ * @param {number} blockNumber
126
+ * @returns {TransactionBuilder} This transaction builder.
127
+ *
128
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
129
+ */
130
+ TransactionBuilder.prototype.validity = function (_a) {
131
+ var firstValid = _a.firstValid, maxDuration = _a.maxDuration;
132
+ if (firstValid) {
133
+ this.validateValue(new bignumber_js_1.default(firstValid));
134
+ this._blockNumber = firstValid;
135
+ }
136
+ if (maxDuration) {
137
+ this.validateValue(new bignumber_js_1.default(maxDuration));
138
+ this._eraPeriod = maxDuration;
139
+ }
140
+ return this;
141
+ };
142
+ /**
143
+ * The hash of the checkpoint block.
144
+ *
145
+ * @param {number} blockHash
146
+ * @returns {TransactionBuilder} This transaction builder.
28
147
  *
29
- * @param {Transaction} tx the transaction data
148
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
149
+ * @see https://wiki.polkadot.network/docs/build-protocol-info#transaction-mortality
30
150
  */
31
- TransactionBuilder.prototype.initBuilder = function (tx) {
32
- throw new errors_1.NotImplementedError('initBuilder not implemented');
151
+ TransactionBuilder.prototype.referenceBlock = function (referenceBlock) {
152
+ this._referenceBlock = referenceBlock;
153
+ return this;
154
+ };
155
+ /**
156
+ * The current version for transaction format.
157
+ *
158
+ * @param {number} transactionVersion
159
+ * @returns {TransactionBuilder} This transaction builder.
160
+ *
161
+ * @see https://wiki.polkadot.network/docs/build-transaction-construction
162
+ */
163
+ TransactionBuilder.prototype.version = function (transactionVersion) {
164
+ this._transactionVersion = transactionVersion;
165
+ return this;
166
+ };
167
+ TransactionBuilder.prototype.method = function (method) {
168
+ this._method = method;
169
+ return this;
170
+ };
171
+ /**
172
+ * Set the network based on the configuration in the statics module
173
+ */
174
+ TransactionBuilder.prototype.staticsConfig = function () {
175
+ var networkConfig = this._coinConfig.network;
176
+ var specName = networkConfig.specName, genesisHash = networkConfig.genesisHash, specVersion = networkConfig.specVersion, chainName = networkConfig.chainName, metadataRpc = networkConfig.metadataRpc;
177
+ this._genesisHash = genesisHash;
178
+ this._specVersion = specVersion;
179
+ this._chainName = chainName;
180
+ this._specName = specName;
181
+ this._registry = txwrapper_polkadot_1.getRegistry({
182
+ chainName: chainName,
183
+ specName: specName,
184
+ specVersion: specVersion,
185
+ metadataRpc: metadataRpc,
186
+ });
33
187
  };
34
188
  Object.defineProperty(TransactionBuilder.prototype, "transaction", {
35
- // region Getters and Setters
36
189
  /** @inheritdoc */
37
190
  get: function () {
38
191
  return this._transaction;
39
192
  },
193
+ /** @inheritdoc */
194
+ set: function (transaction) {
195
+ this._transaction = transaction;
196
+ },
40
197
  enumerable: false,
41
198
  configurable: true
42
199
  });
43
- // endregion
200
+ TransactionBuilder.prototype.isSigningPayload = function (payload) {
201
+ return payload.blockHash !== undefined;
202
+ };
203
+ /** @inheritdoc */
204
+ TransactionBuilder.prototype.fromImplementation = function (rawTransaction) {
205
+ var metadataRpc = this._coinConfig.network.metadataRpc;
206
+ var decodedTxn = txwrapper_polkadot_1.decode(rawTransaction, {
207
+ metadataRpc: metadataRpc,
208
+ registry: this._registry,
209
+ });
210
+ if (this.isSigningPayload(decodedTxn)) {
211
+ this.referenceBlock(decodedTxn.blockHash);
212
+ this.version(decodedTxn.transactionVersion);
213
+ }
214
+ else {
215
+ this.sender({ address: utils_1.default.decodeDotAddress(decodedTxn.address) });
216
+ }
217
+ this.validity({ maxDuration: decodedTxn.eraPeriod });
218
+ this.sequenceId({
219
+ name: 'Nonce',
220
+ keyword: 'nonce',
221
+ value: decodedTxn.nonce,
222
+ });
223
+ if (decodedTxn.tip) {
224
+ this.fee({ amount: "" + decodedTxn.tip, type: 'tip' });
225
+ }
226
+ this.method(decodedTxn.method);
227
+ return this._transaction;
228
+ };
229
+ /** @inheritdoc */
230
+ TransactionBuilder.prototype.buildImplementation = function () {
231
+ return __awaiter(this, void 0, void 0, function () {
232
+ return __generator(this, function (_a) {
233
+ this.transaction.setTransaction(this.buildTransaction());
234
+ this.transaction.transactionType(this.transactionType);
235
+ this.transaction.registry(this._registry);
236
+ this.transaction.chainName(this._chainName);
237
+ if (this._keyPair) {
238
+ this.transaction.sign(this._keyPair);
239
+ }
240
+ this._transaction.loadInputsAndOutputs();
241
+ return [2 /*return*/, this._transaction];
242
+ });
243
+ });
244
+ };
245
+ TransactionBuilder.prototype.createBaseTxInfo = function () {
246
+ var metadataRpc = this._coinConfig.network.metadataRpc;
247
+ return {
248
+ baseTxInfo: {
249
+ address: this._sender,
250
+ blockHash: this._referenceBlock,
251
+ blockNumber: this._registry.createType('BlockNumber', this._blockNumber).toNumber(),
252
+ eraPeriod: this._eraPeriod,
253
+ genesisHash: this._genesisHash,
254
+ metadataRpc: metadataRpc,
255
+ nonce: this._nonce,
256
+ specVersion: this._specVersion,
257
+ tip: this._tip,
258
+ transactionVersion: this._transactionVersion,
259
+ },
260
+ options: {
261
+ metadataRpc: metadataRpc,
262
+ registry: this._registry,
263
+ },
264
+ };
265
+ };
44
266
  // region Validators
45
267
  /** @inheritdoc */
46
268
  TransactionBuilder.prototype.validateAddress = function (address, addressFormat) {
47
- throw new errors_1.NotImplementedError('validateAddress not implemented');
269
+ if (!utils_1.default.isValidAddress(address.address)) {
270
+ throw new errors_2.AddressValidationError(address.address);
271
+ }
48
272
  };
49
273
  /** @inheritdoc */
50
- TransactionBuilder.prototype.validateKey = function (key) {
51
- throw new errors_1.NotImplementedError('validateKey not implemented');
274
+ TransactionBuilder.prototype.validateKey = function (_a) {
275
+ var key = _a.key;
276
+ var isValidPrivateKeyFromBytes;
277
+ var isValidPrivateKeyFromHex = crypto_1.isValidEd25519Seed(key);
278
+ var isValidPrivateKeyFromBase64 = crypto_1.isValidEd25519Seed(Buffer.from(key, 'base64').toString('hex'));
279
+ try {
280
+ var decodedSeed = utils_1.default.decodeSeed(key);
281
+ isValidPrivateKeyFromBytes = crypto_1.isValidEd25519Seed(Buffer.from(decodedSeed.seed).toString('hex'));
282
+ }
283
+ catch (err) {
284
+ isValidPrivateKeyFromBytes = false;
285
+ }
286
+ if (!isValidPrivateKeyFromBytes && !isValidPrivateKeyFromHex && !isValidPrivateKeyFromBase64) {
287
+ throw new errors_1.BuildTransactionError("Key validation failed");
288
+ }
52
289
  };
53
290
  /** @inheritdoc */
54
291
  TransactionBuilder.prototype.validateRawTransaction = function (rawTransaction) {
55
- throw new errors_1.NotImplementedError('validateRawTransaction not implemented');
292
+ var metadataRpc = this._coinConfig.network.metadataRpc;
293
+ var decodedTxn = txwrapper_polkadot_1.decode(rawTransaction, {
294
+ metadataRpc: metadataRpc,
295
+ registry: this._registry,
296
+ });
297
+ var eraPeriod = decodedTxn.eraPeriod;
298
+ var nonce = decodedTxn.nonce;
299
+ var tip = decodedTxn.tip;
300
+ if (this.isSigningPayload(decodedTxn)) {
301
+ var blockHash = decodedTxn.blockHash;
302
+ var validationResult = txnSchema_1.SigningPayloadTransactionSchema.validate({
303
+ eraPeriod: eraPeriod,
304
+ blockHash: blockHash,
305
+ nonce: nonce,
306
+ tip: tip,
307
+ });
308
+ if (validationResult.error) {
309
+ throw new errors_1.InvalidTransactionError("Transaction validation failed: " + validationResult.error.message);
310
+ }
311
+ }
312
+ else {
313
+ var sender = decodedTxn.address;
314
+ var validationResult = txnSchema_1.SignedTransactionSchema.validate({
315
+ sender: sender,
316
+ nonce: nonce,
317
+ eraPeriod: eraPeriod,
318
+ tip: tip,
319
+ });
320
+ if (validationResult.error) {
321
+ throw new errors_1.InvalidTransactionError("Transaction validation failed: " + validationResult.error.message);
322
+ }
323
+ }
324
+ this.validateDecodedTransaction(decodedTxn, rawTransaction);
56
325
  };
57
326
  /** @inheritdoc */
58
- TransactionBuilder.prototype.validateTransaction = function (transaction) {
59
- throw new errors_1.NotImplementedError('validateTransaction not implemented');
327
+ TransactionBuilder.prototype.validateTransaction = function (_) {
328
+ this.validateBaseFields(this._sender, this._blockNumber, this._referenceBlock, this._genesisHash, this._chainName, this._nonce, this._specVersion, this._specName, this._transactionVersion, this._eraPeriod, this._tip);
329
+ };
330
+ TransactionBuilder.prototype.validateBaseFields = function (sender, blockNumber, blockHash, genesisHash, chainName, nonce, specVersion, specName, transactionVersion, eraPeriod, tip) {
331
+ var validationResult = txnSchema_1.BaseTransactionSchema.validate({
332
+ sender: sender,
333
+ blockNumber: blockNumber,
334
+ blockHash: blockHash,
335
+ genesisHash: genesisHash,
336
+ chainName: chainName,
337
+ nonce: nonce,
338
+ specVersion: specVersion,
339
+ specName: specName,
340
+ transactionVersion: transactionVersion,
341
+ eraPeriod: eraPeriod,
342
+ tip: tip,
343
+ });
344
+ if (validationResult.error) {
345
+ throw new errors_1.InvalidTransactionError("Transaction validation failed: " + validationResult.error.message);
346
+ }
60
347
  };
61
348
  /** @inheritdoc */
62
349
  TransactionBuilder.prototype.validateValue = function (value) {
63
- throw new errors_1.NotImplementedError('validateValue not implemented');
350
+ if (value.isLessThan(0)) {
351
+ throw new errors_1.BuildTransactionError('Value cannot be less than zero');
352
+ }
353
+ };
354
+ // endregion
355
+ /** @inheritdoc */
356
+ TransactionBuilder.prototype.signImplementation = function (_a) {
357
+ var key = _a.key;
358
+ this._keyPair = new keyPair_1.KeyPair({ prv: key });
359
+ return this._transaction;
64
360
  };
65
361
  return TransactionBuilder;
66
362
  }(baseCoin_1.BaseTransactionBuilder));
67
363
  exports.TransactionBuilder = TransactionBuilder;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBcUQ7QUFDckQsNkNBQXlEO0FBSXpEO0lBQWlELHNDQUFzQjtJQUdyRSw0QkFBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3Q0FBVyxHQUFYLFVBQVksRUFBZTtRQUN6QixNQUFNLElBQUksNEJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBSUQsc0JBQWMsMkNBQVc7UUFGekIsNkJBQTZCO1FBQzdCLGtCQUFrQjthQUNsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDOzs7T0FBQTtJQUNELFlBQVk7SUFFWixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLDRDQUFlLEdBQWYsVUFBZ0IsT0FBb0IsRUFBRSxhQUFzQjtRQUMxRCxNQUFNLElBQUksNEJBQW1CLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdDQUFXLEdBQVgsVUFBWSxHQUFZO1FBQ3RCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbURBQXNCLEdBQXRCLFVBQXVCLGNBQW1CO1FBQ3hDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0RBQW1CLEdBQW5CLFVBQW9CLFdBQXlCO1FBQzNDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMENBQWEsR0FBYixVQUFjLEtBQWdCO1FBQzVCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFSCx5QkFBQztBQUFELENBQUMsQUFqREQsQ0FBaUQsaUNBQXNCLEdBaUR0RTtBQWpEcUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpbml0QnVpbGRlciBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBHZXR0ZXJzIGFuZCBTZXR0ZXJzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd2YWxpZGF0ZUFkZHJlc3Mgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ3ZhbGlkYXRlS2V5IG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd2YWxpZGF0ZVRyYW5zYWN0aW9uIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd2YWxpZGF0ZVZhbHVlIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxvRUFBb0U7QUFDcEUsOERBQXFDO0FBQ3JDLDZDQUF3RDtBQUN4RCx3Q0FBc0U7QUFDdEUsNkNBQW9GO0FBRXBGLG1DQUFtRTtBQUVuRSxxQ0FBb0M7QUFDcEMsNkNBQTRDO0FBQzVDLHlDQUE4RztBQUM5RyxrREFBNkQ7QUFFN0Q7SUFBaUQsc0NBQXNCO0lBa0JyRSw0QkFBWSxXQUFpQztRQUE3QyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQUduQjtRQUZDLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQ0FBTSxHQUFOLFVBQU8sRUFBd0I7WUFBdEIsT0FBTyxhQUFBO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsdUNBQVUsR0FBVixVQUFXLEtBQWlCO1FBQzFCLElBQU0sS0FBSyxHQUFHLElBQUksc0JBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxH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QyxLQUFLLENBQUMsT0FBUyxDQUFDLENBQUM7U0FDdkc7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDBDQUFhLEdBQWIsVUFBYyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQsWUFBWTtJQUVaLGtCQUFrQjtJQUNSLCtDQUFrQixHQUE1QixVQUE2QixFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBM1dELENBQWlELGlDQUFzQixHQTJXdEU7QUEzV3FCLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIERvdE5ldHdvcmssIFBvbGthZG90U3BlY05hbWVUeXBlIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IGRlY29kZSwgZ2V0UmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVNlZWQgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uRXJyb3IsIEludmFsaWRGZWVFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IENyZWF0ZUJhc2VUeEluZm8sIEZlZU9wdGlvbnMsIHNlcXVlbmNlSWQsIFR4TWV0aG9kLCB2YWxpZGl0eVdpbmRvdyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uU2NoZW1hLCBTaWduZWRUcmFuc2FjdGlvblNjaGVtYSwgU2lnbmluZ1BheWxvYWRUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgVXRpbHMsIGRlZmF1bHQgYXMgdXRpbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9rZXlQYWlyOiBLZXlQYWlyO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfYmxvY2tOdW1iZXI6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9yZWZlcmVuY2VCbG9jazogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2dlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc3BlY1ZlcnNpb246IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvblZlcnNpb246IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9zcGVjTmFtZTogUG9sa2Fkb3RTcGVjTmFtZVR5cGU7XG4gIHByb3RlY3RlZCBfY2hhaW5OYW1lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfbm9uY2U6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90aXA/OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfZXJhUGVyaW9kPzogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3JlZ2lzdHJ5OiBUeXBlUmVnaXN0cnk7XG4gIHByb3RlY3RlZCBfbWV0aG9kPzogVHhNZXRob2Q7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnN0YXRpY3NDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhZGRyZXNzIG9mIHNlbmRpbmcgYWNjb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHtCYXNlQWRkcmVzc30gYWRkcmVzcyBUaGUgU1M1OC1lbmNvZGVkIGFkZHJlc3MuXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgc2VuZGVyKHsgYWRkcmVzcyB9OiBCYXNlQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLl9zZW5kZXIgPSBhZGRyZXNzO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNlbmRlcihhZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbm9uY2UgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBub25jZVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICovXG4gIHNlcXVlbmNlSWQobm9uY2U6IHNlcXVlbmNlSWQpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIobm9uY2UudmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fbm9uY2UgPSB2YWx1ZS50b051bWJlcigpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aXAgdG8gaW5jcmVhc2UgdHJhbnNhY3Rpb24gcHJpb3JpdHkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSB0aXAgb3B0aW9uYWxcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqL1xuICBmZWUoZmVlOiBGZWVPcHRpb25zKTogdGhpcyB7XG4gICAgaWYgKGZlZS50eXBlICE9PSAndGlwJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRGZWVFcnJvcihmZWUudHlwZSwgJ3RpcCcpO1xuICAgIH1cbiAgICBjb25zdCB0aXBCTiA9IG5ldyBCaWdOdW1iZXIoZmVlLmFtb3VudCk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKHRpcEJOKTtcbiAgICB0aGlzLl90aXAgPSB0aXBCTi50b051bWJlcigpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGhlIGNoZWNrcG9pbnQgYmxvY2sgYWZ0ZXIgd2hpY2ggdGhlIHRyYW5zYWN0aW9uIGlzIHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBibG9ja051bWJlclxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC10cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cbiAgICovXG4gIHZhbGlkaXR5KHsgZmlyc3RWYWxpZCwgbWF4RHVyYXRpb24gfTogdmFsaWRpdHlXaW5kb3cpOiB0aGlzIHtcbiAgICBpZiAoZmlyc3RWYWxpZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmlyc3RWYWxpZCkpO1xuICAgICAgdGhpcy5fYmxvY2tOdW1iZXIgPSBmaXJzdFZhbGlkO1xuICAgIH1cbiAgICBpZiAobWF4RHVyYXRpb24pIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKG1heER1cmF0aW9uKSk7XG4gICAgICB0aGlzLl9lcmFQZXJpb2QgPSBtYXhEdXJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGNoZWNrcG9pbnQgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBibG9ja0hhc2hcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvYnVpbGQtdHJhbnNhY3Rpb24tY29uc3RydWN0aW9uXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC1wcm90b2NvbC1pbmZvI3RyYW5zYWN0aW9uLW1vcnRhbGl0eVxuICAgKi9cbiAgcmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2s6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX3JlZmVyZW5jZUJsb2NrID0gcmVmZXJlbmNlQmxvY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdmVyc2lvbiBmb3IgdHJhbnNhY3Rpb24gZm9ybWF0LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNhY3Rpb25WZXJzaW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2J1aWxkLXRyYW5zYWN0aW9uLWNvbnN0cnVjdGlvblxuICAgKi9cbiAgdmVyc2lvbih0cmFuc2FjdGlvblZlcnNpb246IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uVmVyc2lvbiA9IHRyYW5zYWN0aW9uVmVyc2lvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgbWV0aG9kKG1ldGhvZDogVHhNZXRob2QpOiB0aGlzIHtcbiAgICB0aGlzLl9tZXRob2QgPSBtZXRob2Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBuZXR3b3JrIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIGluIHRoZSBzdGF0aWNzIG1vZHVsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpY3NDb25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgbmV0d29ya0NvbmZpZyA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBEb3ROZXR3b3JrO1xuICAgIGNvbnN0IHsgc3BlY05hbWUsIGdlbmVzaXNIYXNoLCBzcGVjVmVyc2lvbiwgY2hhaW5OYW1lLCBtZXRhZGF0YVJwYyB9ID0gbmV0d29ya0NvbmZpZztcbiAgICB0aGlzLl9nZW5lc2lzSGFzaCA9IGdlbmVzaXNIYXNoO1xuICAgIHRoaXMuX3NwZWNWZXJzaW9uID0gc3BlY1ZlcnNpb247XG4gICAgdGhpcy5fY2hhaW5OYW1lID0gY2hhaW5OYW1lO1xuICAgIHRoaXMuX3NwZWNOYW1lID0gc3BlY05hbWU7XG4gICAgdGhpcy5fcmVnaXN0cnkgPSBnZXRSZWdpc3RyeSh7XG4gICAgICBjaGFpbk5hbWU6IGNoYWluTmFtZSxcbiAgICAgIHNwZWNOYW1lOiBzcGVjTmFtZSxcbiAgICAgIHNwZWNWZXJzaW9uOiBzcGVjVmVyc2lvbixcbiAgICAgIG1ldGFkYXRhUnBjOiBtZXRhZGF0YVJwYyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzU2lnbmluZ1BheWxvYWQocGF5bG9hZDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogcGF5bG9hZCBpcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQge1xuICAgIHJldHVybiAocGF5bG9hZCBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQpLmJsb2NrSGFzaCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB7IG1ldGFkYXRhUnBjIH0gPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRG90TmV0d29yaztcbiAgICBjb25zdCBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICB9KSBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHg7XG4gICAgaWYgKHRoaXMuaXNTaWduaW5nUGF5bG9hZChkZWNvZGVkVHhuKSkge1xuICAgICAgdGhpcy5yZWZlcmVuY2VCbG9jayhkZWNvZGVkVHhuLmJsb2NrSGFzaCk7XG4gICAgICB0aGlzLnZlcnNpb24oZGVjb2RlZFR4bi50cmFuc2FjdGlvblZlcnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbmRlcih7IGFkZHJlc3M6IHV0aWxzLmRlY29kZURvdEFkZHJlc3MoZGVjb2RlZFR4bi5hZGRyZXNzKSB9KTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGl0eSh7IG1heER1cmF0aW9uOiBkZWNvZGVkVHhuLmVyYVBlcmlvZCB9KTtcbiAgICB0aGlzLnNlcXVlbmNlSWQoe1xuICAgICAgbmFtZTogJ05vbmNlJyxcbiAgICAgIGtleXdvcmQ6ICdub25jZScsXG4gICAgICB2YWx1ZTogZGVjb2RlZFR4bi5ub25jZSxcbiAgICB9KTtcbiAgICBpZiAoZGVjb2RlZFR4bi50aXApIHtcbiAgICAgIHRoaXMuZmVlKHsgYW1vdW50OiBgJHtkZWNvZGVkVHhuLnRpcH1gLCB0eXBlOiAndGlwJyB9KTtcbiAgICB9XG4gICAgdGhpcy5tZXRob2QoZGVjb2RlZFR4bi5tZXRob2QgYXMgdW5rbm93biBhcyBUeE1ldGhvZCk7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHRoaXMuYnVpbGRUcmFuc2FjdGlvbigpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWdpc3RyeSh0aGlzLl9yZWdpc3RyeSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5jaGFpbk5hbWUodGhpcy5fY2hhaW5OYW1lKTtcbiAgICBpZiAodGhpcy5fa2V5UGFpcikge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zaWduKHRoaXMuX2tleVBhaXIpO1xuICAgIH1cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVCYXNlVHhJbmZvKCk6IENyZWF0ZUJhc2VUeEluZm8ge1xuICAgIGNvbnN0IHsgbWV0YWRhdGFScGMgfSA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBEb3ROZXR3b3JrO1xuICAgIHJldHVybiB7XG4gICAgICBiYXNlVHhJbmZvOiB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgYmxvY2tIYXNoOiB0aGlzLl9yZWZlcmVuY2VCbG9jayxcbiAgICAgICAgYmxvY2tOdW1iZXI6IHRoaXMuX3JlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0Jsb2NrTnVtYmVyJywgdGhpcy5fYmxvY2tOdW1iZXIpLnRvTnVtYmVyKCksXG4gICAgICAgIGVyYVBlcmlvZDogdGhpcy5fZXJhUGVyaW9kLFxuICAgICAgICBnZW5lc2lzSGFzaDogdGhpcy5fZ2VuZXNpc0hhc2gsXG4gICAgICAgIG1ldGFkYXRhUnBjLFxuICAgICAgICBub25jZTogdGhpcy5fbm9uY2UsXG4gICAgICAgIHNwZWNWZXJzaW9uOiB0aGlzLl9zcGVjVmVyc2lvbixcbiAgICAgICAgdGlwOiB0aGlzLl90aXAsXG4gICAgICAgIHRyYW5zYWN0aW9uVmVyc2lvbjogdGhpcy5fdHJhbnNhY3Rpb25WZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWV0YWRhdGFScGMsXG4gICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNwZWNpZmljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaW50ZXJuYWxseVxuICAgKiB1c2luZyB0aGUgQHN1YnN0cmF0ZS90eHdyYXBwZXIgYnVpbGRlci5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIVV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yKGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KHsga2V5IH06IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQgaXNWYWxpZFByaXZhdGVLZXlGcm9tQnl0ZXM7XG4gICAgY29uc3QgaXNWYWxpZFByaXZhdGVLZXlGcm9tSGV4ID0gaXNWYWxpZEVkMjU1MTlTZWVkKGtleSk7XG4gICAgY29uc3QgaXNWYWxpZFByaXZhdGVLZXlGcm9tQmFzZTY0ID0gaXNWYWxpZEVkMjU1MTlTZWVkKEJ1ZmZlci5mcm9tKGtleSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRTZWVkID0gVXRpbHMuZGVjb2RlU2VlZChrZXkpO1xuICAgICAgaXNWYWxpZFByaXZhdGVLZXlGcm9tQnl0ZXMgPSBpc1ZhbGlkRWQyNTUxOVNlZWQoQnVmZmVyLmZyb20oZGVjb2RlZFNlZWQuc2VlZCkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlzVmFsaWRQcml2YXRlS2V5RnJvbUJ5dGVzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc1ZhbGlkUHJpdmF0ZUtleUZyb21CeXRlcyAmJiAhaXNWYWxpZFByaXZhdGVLZXlGcm9tSGV4ICYmICFpc1ZhbGlkUHJpdmF0ZUtleUZyb21CYXNlNjQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEtleSB2YWxpZGF0aW9uIGZhaWxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHNwZWNpZmljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaW50ZXJuYWxseVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKFxuICAgIGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCxcbiAgICByYXdUcmFuc2FjdGlvbj86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgeyBtZXRhZGF0YVJwYyB9ID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIERvdE5ldHdvcms7XG4gICAgY29uc3QgZGVjb2RlZFR4biA9IGRlY29kZShyYXdUcmFuc2FjdGlvbiwge1xuICAgICAgbWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSkgYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4O1xuXG4gICAgY29uc3QgZXJhUGVyaW9kID0gZGVjb2RlZFR4bi5lcmFQZXJpb2Q7XG4gICAgY29uc3Qgbm9uY2UgPSBkZWNvZGVkVHhuLm5vbmNlO1xuICAgIGNvbnN0IHRpcCA9IGRlY29kZWRUeG4udGlwO1xuXG4gICAgaWYgKHRoaXMuaXNTaWduaW5nUGF5bG9hZChkZWNvZGVkVHhuKSkge1xuICAgICAgY29uc3QgYmxvY2tIYXNoID0gZGVjb2RlZFR4bi5ibG9ja0hhc2g7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gU2lnbmluZ1BheWxvYWRUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICAgIGVyYVBlcmlvZCxcbiAgICAgICAgYmxvY2tIYXNoLFxuICAgICAgICBub25jZSxcbiAgICAgICAgdGlwLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VuZGVyID0gZGVjb2RlZFR4bi5hZGRyZXNzO1xuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFNpZ25lZFRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgICAgc2VuZGVyLFxuICAgICAgICBub25jZSxcbiAgICAgICAgZXJhUGVyaW9kLFxuICAgICAgICB0aXAsXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4biwgcmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oXzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlQmFzZUZpZWxkcyhcbiAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgIHRoaXMuX2Jsb2NrTnVtYmVyLFxuICAgICAgdGhpcy5fcmVmZXJlbmNlQmxvY2ssXG4gICAgICB0aGlzLl9nZW5lc2lzSGFzaCxcbiAgICAgIHRoaXMuX2NoYWluTmFtZSxcbiAgICAgIHRoaXMuX25vbmNlLFxuICAgICAgdGhpcy5fc3BlY1ZlcnNpb24sXG4gICAgICB0aGlzLl9zcGVjTmFtZSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uVmVyc2lvbixcbiAgICAgIHRoaXMuX2VyYVBlcmlvZCxcbiAgICAgIHRoaXMuX3RpcCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUJhc2VGaWVsZHMoXG4gICAgc2VuZGVyOiBzdHJpbmcsXG4gICAgYmxvY2tOdW1iZXI6IG51bWJlcixcbiAgICBibG9ja0hhc2g6IHN0cmluZyxcbiAgICBnZW5lc2lzSGFzaDogc3RyaW5nLFxuICAgIGNoYWluTmFtZTogc3RyaW5nLFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgc3BlY1ZlcnNpb246IG51bWJlcixcbiAgICBzcGVjTmFtZTogUG9sa2Fkb3RTcGVjTmFtZVR5cGUsXG4gICAgdHJhbnNhY3Rpb25WZXJzaW9uOiBudW1iZXIsXG4gICAgZXJhUGVyaW9kOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgdGlwOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBCYXNlVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgc2VuZGVyLFxuICAgICAgYmxvY2tOdW1iZXIsXG4gICAgICBibG9ja0hhc2gsXG4gICAgICBnZW5lc2lzSGFzaCxcbiAgICAgIGNoYWluTmFtZSxcbiAgICAgIG5vbmNlLFxuICAgICAgc3BlY1ZlcnNpb24sXG4gICAgICBzcGVjTmFtZSxcbiAgICAgIHRyYW5zYWN0aW9uVmVyc2lvbixcbiAgICAgIGVyYVBlcmlvZCxcbiAgICAgIHRpcCxcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKHsga2V5IH06IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy5fa2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -1,24 +1,20 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
2
  import { BaseTransactionBuilderFactory } from '../baseCoin';
3
+ import { TypeRegistry } from '@substrate/txwrapper-core/lib/types';
4
+ import { TransactionBuilder } from './transactionBuilder';
3
5
  import { TransferBuilder } from './transferBuilder';
4
6
  import { WalletInitializationBuilder } from './walletInitializationBuilder';
5
- import { TransactionBuilder } from './transactionBuilder';
6
- import { Transaction } from './transaction';
7
+ import { StakingBuilder } from './stakingBuilder';
8
+ import { UnstakeBuilder } from '.';
7
9
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
10
+ protected _registry: TypeRegistry;
8
11
  constructor(_coinConfig: Readonly<CoinConfig>);
9
- /** @inheritdoc */
10
- from(raw: Uint8Array | string): TransactionBuilder;
11
- /** @inheritdoc */
12
- getWalletInitializationBuilder(tx?: Transaction): WalletInitializationBuilder;
13
- /** @inheritdoc */
14
- getTransferBuilder(tx?: Transaction): TransferBuilder;
15
- /**
16
- * Initialize the builder with the given transaction
17
- *
18
- * @param {Transaction | undefined} tx - the transaction used to initialize the builder
19
- * @param {TransactionBuilder} builder - the builder to be initialized
20
- * @returns {TransactionBuilder} the builder initialized
21
- */
22
- private static initializeBuilder;
12
+ getTransferBuilder(): TransferBuilder;
13
+ getStakingBuilder(): StakingBuilder;
14
+ getWalletInitializationBuilder(): WalletInitializationBuilder;
15
+ getUnstakeBuilder(): UnstakeBuilder;
16
+ from(rawTxn: string): TransactionBuilder;
17
+ protected staticsConfig(): void;
18
+ private getBuilder;
23
19
  }
24
20
  //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,kBAAkB;IAIlD,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAMjC"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AAEnC,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC;gBAEtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,cAAc;IAInC,8BAA8B,IAAI,2BAA2B;IAI7D,iBAAiB,IAAI,cAAc;IAInC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAMxC,SAAS,CAAC,aAAa,IAAI,IAAI;IAW/B,OAAO,CAAC,UAAU;CAsBnB"}