@bitgo/sdk-coin-avaxp 0.2.0-dev.1 → 1.0.1-rc.2

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 (69) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +39 -0
  3. package/dist/src/avaxp.d.ts +60 -0
  4. package/dist/src/avaxp.d.ts.map +1 -0
  5. package/dist/src/avaxp.js +175 -0
  6. package/dist/src/iface.d.ts +20 -41
  7. package/dist/src/iface.d.ts.map +1 -1
  8. package/dist/src/iface.js +1 -15
  9. package/dist/src/index.d.ts +4 -18
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +9 -28
  12. package/dist/src/{delegatorTxBuilder.d.ts → lib/delegatorTxBuilder.d.ts} +21 -6
  13. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/delegatorTxBuilder.js +240 -0
  15. package/dist/src/{errors.d.ts → lib/errors.d.ts} +0 -0
  16. package/dist/src/lib/errors.d.ts.map +1 -0
  17. package/dist/src/lib/errors.js +19 -0
  18. package/dist/src/lib/iface.d.ts +42 -0
  19. package/dist/src/lib/iface.d.ts.map +1 -0
  20. package/dist/src/lib/iface.js +12 -0
  21. package/dist/src/lib/index.d.ts +9 -0
  22. package/dist/src/lib/index.d.ts.map +1 -0
  23. package/dist/src/lib/index.js +29 -0
  24. package/dist/src/{keyPair.d.ts → lib/keyPair.d.ts} +13 -2
  25. package/dist/src/lib/keyPair.d.ts.map +1 -0
  26. package/dist/src/lib/keyPair.js +156 -0
  27. package/dist/src/lib/transaction.d.ts +73 -0
  28. package/dist/src/lib/transaction.d.ts.map +1 -0
  29. package/dist/src/lib/transaction.js +247 -0
  30. package/dist/src/{transactionBuilder.d.ts → lib/transactionBuilder.d.ts} +25 -22
  31. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/transactionBuilder.js +181 -0
  33. package/dist/src/{transactionBuilderFactory.d.ts → lib/transactionBuilderFactory.d.ts} +3 -4
  34. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  35. package/dist/src/lib/transactionBuilderFactory.js +50 -0
  36. package/dist/src/{transferBuilder.d.ts → lib/transferBuilder.d.ts} +0 -0
  37. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  38. package/dist/src/lib/transferBuilder.js +31 -0
  39. package/dist/src/lib/utils.d.ts +130 -0
  40. package/dist/src/lib/utils.d.ts.map +1 -0
  41. package/dist/src/lib/utils.js +257 -0
  42. package/dist/src/{validatorTxBuilder.d.ts → lib/validatorTxBuilder.d.ts} +11 -3
  43. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/validatorTxBuilder.js +73 -0
  45. package/dist/src/tavaxp.d.ts +9 -0
  46. package/dist/src/tavaxp.d.ts.map +1 -0
  47. package/dist/src/tavaxp.js +14 -0
  48. package/dist/tsconfig.tsbuildinfo +973 -2827
  49. package/package.json +15 -10
  50. package/dist/src/delegatorTxBuilder.d.ts.map +0 -1
  51. package/dist/src/delegatorTxBuilder.js +0 -183
  52. package/dist/src/errors.d.ts.map +0 -1
  53. package/dist/src/errors.js +0 -19
  54. package/dist/src/keyPair.d.ts.map +0 -1
  55. package/dist/src/keyPair.js +0 -130
  56. package/dist/src/transaction.d.ts +0 -43
  57. package/dist/src/transaction.d.ts.map +0 -1
  58. package/dist/src/transaction.js +0 -98
  59. package/dist/src/transactionBuilder.d.ts.map +0 -1
  60. package/dist/src/transactionBuilder.js +0 -171
  61. package/dist/src/transactionBuilderFactory.d.ts.map +0 -1
  62. package/dist/src/transactionBuilderFactory.js +0 -53
  63. package/dist/src/transferBuilder.d.ts.map +0 -1
  64. package/dist/src/transferBuilder.js +0 -31
  65. package/dist/src/utils.d.ts +0 -50
  66. package/dist/src/utils.d.ts.map +0 -1
  67. package/dist/src/utils.js +0 -98
  68. package/dist/src/validatorTxBuilder.d.ts.map +0 -1
  69. package/dist/src/validatorTxBuilder.js +0 -58
package/dist/src/index.js CHANGED
@@ -11,6 +11,9 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
11
  }) : function(o, v) {
12
12
  o["default"] = v;
13
13
  });
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
14
17
  var __importStar = (this && this.__importStar) || function (mod) {
15
18
  if (mod && mod.__esModule) return mod;
16
19
  var result = {};
@@ -19,31 +22,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
22
  return result;
20
23
  };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.register = exports.Utils = exports.TransactionBuilderFactory = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
23
- const Utils = __importStar(require("./utils"));
24
- exports.Utils = Utils;
25
- const statics_1 = require("@bitgo/statics");
26
- var keyPair_1 = require("./keyPair");
27
- Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
28
- var transaction_1 = require("./transaction");
29
- Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
30
- var transactionBuilder_1 = require("./transactionBuilder");
31
- Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
32
- var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
33
- Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
34
- /**
35
- * Register a new coin instance with its builder factory
36
- *
37
- * @param {string} coinName coin name as it was registered in @bitgo/statics
38
- * @param {any} builderFactory the builder factory class for that coin
39
- * @returns {any} the factory instance for the registered coin
40
- */
41
- function register(coinName, builderFactory) {
42
- const coinConfig = statics_1.coins.get(coinName);
43
- const factory = new builderFactory(coinConfig);
44
- // coinBuilderMap[coinName] = factory;
45
- // coinBuilderMap[coinName] = builderFactory; // For now register the constructor function until reimplement getBuilder method
46
- return factory;
47
- }
48
- exports.register = register;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQU94QixzQkFBSztBQUxkLDRDQUErRDtBQUMvRCxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQTtBQUdsQzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixRQUFRLENBQ3RCLFFBQWdCLEVBQ2hCLGNBQThEO0lBRTlELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0Msc0NBQXNDO0lBQ3RDLDhIQUE4SDtJQUM5SCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBVEQsNEJBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBVdGlscyB9O1xuXG4vKipcbiAqIFJlZ2lzdGVyIGEgbmV3IGNvaW4gaW5zdGFuY2Ugd2l0aCBpdHMgYnVpbGRlciBmYWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIGNvaW4gbmFtZSBhcyBpdCB3YXMgcmVnaXN0ZXJlZCBpbiBAYml0Z28vc3RhdGljc1xuICogQHBhcmFtIHthbnl9IGJ1aWxkZXJGYWN0b3J5IHRoZSBidWlsZGVyIGZhY3RvcnkgY2xhc3MgZm9yIHRoYXQgY29pblxuICogQHJldHVybnMge2FueX0gdGhlIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyPFQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeT4oXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIGJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9XG4pOiBUIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldChjb2luTmFtZSk7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgYnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gIC8vIGNvaW5CdWlsZGVyTWFwW2NvaW5OYW1lXSA9IGZhY3Rvcnk7XG4gIC8vIGNvaW5CdWlsZGVyTWFwW2NvaW5OYW1lXSA9IGJ1aWxkZXJGYWN0b3J5OyAvLyBGb3Igbm93IHJlZ2lzdGVyIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB1bnRpbCByZWltcGxlbWVudCBnZXRCdWlsZGVyIG1ldGhvZFxuICByZXR1cm4gZmFjdG9yeTtcbn1cbiJdfQ==
25
+ exports.AvaxpLib = void 0;
26
+ __exportStar(require("./avaxp"), exports);
27
+ __exportStar(require("./tavaxp"), exports);
28
+ exports.AvaxpLib = __importStar(require("./lib"));
29
+ __exportStar(require("./iface"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsa0RBQWtDO0FBQ2xDLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXZheHAnO1xuZXhwb3J0ICogZnJvbSAnLi90YXZheHAnO1xuZXhwb3J0ICogYXMgQXZheHBMaWIgZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG4iXX0=
@@ -1,11 +1,11 @@
1
1
  /// <reference types="bn.js" />
2
- import { BaseAddress, BaseKey, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseAddress, TransactionType } from '@bitgo/sdk-core';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
- import { Transaction } from './transaction';
5
4
  import { TransactionBuilder } from './transactionBuilder';
6
- import { BaseTx, ParseableOutput, TransferableInput, TransferableOutput } from 'avalanche/dist/apis/platformvm';
5
+ import { AddDelegatorTx, BaseTx, ParseableOutput, TransferableInput, TransferableOutput, Tx } from 'avalanche/dist/apis/platformvm';
7
6
  import { BN } from 'avalanche';
8
7
  import { DecodedUtxoObj } from './iface';
8
+ import { Credential } from 'avalanche/dist/common';
9
9
  export declare class DelegatorTxBuilder extends TransactionBuilder {
10
10
  protected _nodeID: string;
11
11
  protected _startTime: BN;
@@ -71,19 +71,34 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
71
71
  * @param amount
72
72
  */
73
73
  validateStakeAmount(amount: BN): void;
74
- protected signImplementation(key: BaseKey): Transaction;
75
- initBuilder(tx?: BaseTx): this;
74
+ initBuilder(tx: Tx): this;
75
+ static verifyTxType(baseTx: BaseTx): baseTx is AddDelegatorTx;
76
+ verifyTxType(baseTx: BaseTx): baseTx is AddDelegatorTx;
76
77
  /**
77
78
  *
78
79
  * @protected
79
80
  */
80
- protected buildAvaxpTransaction(): BaseTx;
81
+ protected buildAvaxpTransaction(): void;
81
82
  protected stakeTransferOut(): TransferableOutput;
82
83
  protected rewardOwnersOutput(): ParseableOutput;
84
+ /**
85
+ * Inputs can be controlled but outputs get reordered in transactions
86
+ * In order to make sure that the mapping is always correct we create an addressIndx which matches to the appropiate
87
+ * signatureIdx
88
+ * @param inputs
89
+ * @protected
90
+ */
83
91
  protected recoverUtxos(inputs: TransferableInput[]): DecodedUtxoObj[];
92
+ /**
93
+ * Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
94
+ * To find the correct location for the signature, we use the ouput's addresses to create the signatureIdx in the order that we desire
95
+ * 0: user key, 1: recovery key, 2: hsm key
96
+ * @protected
97
+ */
84
98
  protected createInputOutput(): {
85
99
  inputs: TransferableInput[];
86
100
  outputs: TransferableOutput[];
101
+ credentials: Credential[];
87
102
  };
88
103
  }
89
104
  //# sourceMappingURL=delegatorTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegatorTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAoB,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,MAAM,EACN,eAAe,EAMf,iBAAiB,EACjB,kBAAkB,EAClB,EAAE,EAEH,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAC3B,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC;IAEtC;;;OAGG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOrC;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMzC;;OAEG;IAEH;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWpC;;;;;;;OAOG;IACH,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI;IAYvD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IAQrC,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAczB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAwBvC,SAAS,CAAC,gBAAgB,IAAI,kBAAkB;IAYhD,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAM/C;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE;IAkBrE;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,IAAI;QAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAyFF"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DelegatorTxBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
10
+ const avalanche_1 = require("avalanche");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
13
+ /**
14
+ *
15
+ * @param coinConfig
16
+ */
17
+ constructor(coinConfig) {
18
+ super(coinConfig);
19
+ const network = coinConfig.network;
20
+ this._stakeAmount = new avalanche_1.BN(network.minStake.toString());
21
+ }
22
+ /**
23
+ * get transaction type
24
+ * @protected
25
+ */
26
+ get transactionType() {
27
+ return sdk_core_1.TransactionType.addDelegator;
28
+ }
29
+ /**
30
+ *
31
+ * @param nodeID
32
+ */
33
+ nodeID(value) {
34
+ this.validateNodeID(value);
35
+ this._nodeID = value;
36
+ return this;
37
+ }
38
+ /**
39
+ *
40
+ * @param startTime
41
+ */
42
+ startTime(value) {
43
+ this._startTime = new avalanche_1.BN(value);
44
+ return this;
45
+ }
46
+ /**
47
+ *
48
+ * @param endTime
49
+ */
50
+ endTime(value) {
51
+ this._endTime = new avalanche_1.BN(value);
52
+ return this;
53
+ }
54
+ /**
55
+ *
56
+ * @param value
57
+ */
58
+ stakeAmount(value) {
59
+ const valueBN = avalanche_1.BN.isBN(value) ? value : new avalanche_1.BN(value);
60
+ this.validateStakeAmount(valueBN);
61
+ this._stakeAmount = valueBN;
62
+ return this;
63
+ }
64
+ /**
65
+ * Set the transaction source
66
+ *
67
+ * @param {BaseAddress} address The source account
68
+ * @returns {TransactionBuilder} This transaction builder
69
+ */
70
+ rewardAddress(address) {
71
+ this.validateAddress(address);
72
+ this._rewardAddress = address;
73
+ return this;
74
+ }
75
+ /**
76
+ * region Validators
77
+ */
78
+ /**
79
+ * validates a correct NodeID is used
80
+ * @param nodeID
81
+ */
82
+ validateNodeID(nodeID) {
83
+ if (!nodeID) {
84
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nodeID');
85
+ }
86
+ if (nodeID.slice(0, 6) !== 'NodeID') {
87
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid NodeID tag');
88
+ }
89
+ if (nodeID.length !== 40) {
90
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: NodeID has incorrect length');
91
+ }
92
+ }
93
+ /**
94
+ *
95
+ * protected _startTime: Date;
96
+ * protected _endTime: Date;
97
+ * 2 weeks = 1209600
98
+ * 1 year = 31556926
99
+ * unix time stamp based off seconds
100
+ */
101
+ validateStakeDuration(startTime, endTime) {
102
+ if (endTime < startTime) {
103
+ throw new sdk_core_1.BuildTransactionError('End date cannot be less than start date');
104
+ }
105
+ if (startTime.add(new avalanche_1.BN(this.transaction._network.minStakeDuration)).gt(endTime)) {
106
+ throw new sdk_core_1.BuildTransactionError('End date must be greater than or equal to two weeks');
107
+ }
108
+ if (endTime.gt(startTime.add(new avalanche_1.BN(this.transaction._network.maxStakeDuration)))) {
109
+ throw new sdk_core_1.BuildTransactionError('End date must be less than or equal to one year');
110
+ }
111
+ }
112
+ /**
113
+ *
114
+ * @param amount
115
+ */
116
+ validateStakeAmount(amount) {
117
+ if (amount.lt(new avalanche_1.BN(this.transaction._network.minStake.toString()))) {
118
+ throw new sdk_core_1.BuildTransactionError('Minimum staking amount is 2,000 AVAX');
119
+ }
120
+ }
121
+ // endregion
122
+ initBuilder(tx) {
123
+ super.initBuilder(tx);
124
+ const baseTx = tx.getUnsignedTx().getTransaction();
125
+ if (!this.verifyTxType(baseTx)) {
126
+ throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
127
+ }
128
+ this._nodeID = baseTx.getNodeIDString();
129
+ this._startTime = baseTx.getStartTime();
130
+ this._endTime = baseTx.getEndTime();
131
+ this._stakeAmount = baseTx.getStakeAmount();
132
+ this.transaction._utxos = this.recoverUtxos(baseTx.getIns());
133
+ return this;
134
+ }
135
+ static verifyTxType(baseTx) {
136
+ return baseTx.getTypeID() === platformvm_1.PlatformVMConstants.ADDVALIDATORTX;
137
+ }
138
+ verifyTxType(baseTx) {
139
+ return DelegatorTxBuilder.verifyTxType(baseTx);
140
+ }
141
+ /**
142
+ *
143
+ * @protected
144
+ */
145
+ buildAvaxpTransaction() {
146
+ const { inputs, outputs, credentials } = this.createInputOutput();
147
+ this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.AddDelegatorTx(this.transaction._networkID, this.transaction._blockchainID, outputs, inputs, this.transaction._memo, utils_1.default.NodeIDStringToBuffer(this._nodeID), this._startTime, this._endTime, this._stakeAmount, [this.stakeTransferOut()], this.rewardOwnersOutput())), credentials));
148
+ }
149
+ stakeTransferOut() {
150
+ return new platformvm_1.TransferableOutput(this.transaction._assetId, new platformvm_1.SECPTransferOutput(this._stakeAmount, this.transaction._fromAddresses, this.transaction._locktime, this.transaction._threshold));
151
+ }
152
+ rewardOwnersOutput() {
153
+ return new platformvm_1.ParseableOutput(new platformvm_1.SECPOwnerOutput(this.transaction._fromAddresses, this.transaction._locktime, this.transaction._threshold));
154
+ }
155
+ /**
156
+ * Inputs can be controlled but outputs get reordered in transactions
157
+ * In order to make sure that the mapping is always correct we create an addressIndx which matches to the appropiate
158
+ * signatureIdx
159
+ * @param inputs
160
+ * @protected
161
+ */
162
+ recoverUtxos(inputs) {
163
+ return inputs.map((input) => {
164
+ const secpInput = input.getInput();
165
+ // Order Addresses as output was defined.
166
+ const addressesIndex = secpInput.getSigIdxs().map((s) => s.toBuffer().readUInt32BE(0));
167
+ return {
168
+ outputID: 7,
169
+ outputidx: utils_1.default.cb58Encode(input.getOutputIdx()),
170
+ txid: utils_1.default.cb58Encode(input.getTxID()),
171
+ amount: secpInput.getAmount().toString(),
172
+ threshold: this.transaction._threshold,
173
+ addresses: [],
174
+ addressesIndex,
175
+ };
176
+ });
177
+ }
178
+ /**
179
+ * Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
180
+ * To find the correct location for the signature, we use the ouput's addresses to create the signatureIdx in the order that we desire
181
+ * 0: user key, 1: recovery key, 2: hsm key
182
+ * @protected
183
+ */
184
+ createInputOutput() {
185
+ const inputs = [];
186
+ const outputs = [];
187
+ const addresses = this.transaction._fromAddresses.map((b) => utils_1.default.addressToString(this.transaction._network.hrp, this.transaction._network.alias, b));
188
+ let total = new avalanche_1.BN(0);
189
+ const totalTarget = this._stakeAmount.clone().add(this.transaction._txFee);
190
+ const credentials = [];
191
+ this.transaction._utxos.forEach((outputs) => {
192
+ if (!outputs.addressesIndex || outputs.addressesIndex.length == 0) {
193
+ outputs.addressesIndex = addresses.map((a) => outputs.addresses.indexOf(a));
194
+ }
195
+ });
196
+ this.transaction._utxos
197
+ .filter((output) => {
198
+ var _a, _b;
199
+ return output.threshold === this.transaction._threshold &&
200
+ (((_a = output.addressesIndex) === null || _a === void 0 ? void 0 : _a.length) == 3 || !((_b = output.addressesIndex) === null || _b === void 0 ? void 0 : _b.includes(-1)));
201
+ })
202
+ .forEach((output, i) => {
203
+ var _a;
204
+ if (output.outputID === 7 && total.lte(totalTarget)) {
205
+ const txidBuf = utils_1.default.cb58Decode(output.txid);
206
+ const amt = new avalanche_1.BN(output.amount);
207
+ const outputidx = utils_1.default.cb58Decode(output.outputidx);
208
+ const addressesIndex = (_a = output.addressesIndex) !== null && _a !== void 0 ? _a : [];
209
+ const isRawUtxos = output.addresses.length == 0;
210
+ const firstIndex = this.recoverSigner ? 1 : 0;
211
+ total = total.add(amt);
212
+ const secpTransferInput = new platformvm_1.SECPTransferInput(amt);
213
+ if (isRawUtxos) {
214
+ addressesIndex.forEach((i) => secpTransferInput.addSignatureIdx(i, this.transaction._fromAddresses[i]));
215
+ }
216
+ else {
217
+ if (addressesIndex[firstIndex] > addressesIndex[2]) {
218
+ secpTransferInput.addSignatureIdx(addressesIndex[2], this.transaction._fromAddresses[2]);
219
+ secpTransferInput.addSignatureIdx(addressesIndex[firstIndex], this.transaction._fromAddresses[firstIndex]);
220
+ credentials.push(platformvm_1.SelectCredentialClass(secpTransferInput.getCredentialID(), ['', this.transaction._fromAddresses[firstIndex].toString('hex')].map(utils_1.default.createSig)));
221
+ }
222
+ else {
223
+ secpTransferInput.addSignatureIdx(addressesIndex[firstIndex], this.transaction._fromAddresses[firstIndex]);
224
+ secpTransferInput.addSignatureIdx(addressesIndex[2], this.transaction._fromAddresses[2]);
225
+ credentials.push(platformvm_1.SelectCredentialClass(secpTransferInput.getCredentialID(), [this.transaction._fromAddresses[firstIndex].toString('hex'), ''].map(utils_1.default.createSig)));
226
+ }
227
+ }
228
+ const input = new platformvm_1.TransferableInput(txidBuf, outputidx, this.transaction._assetId, secpTransferInput);
229
+ inputs.push(input);
230
+ }
231
+ });
232
+ if (total.lt(totalTarget)) {
233
+ throw new sdk_core_1.BuildTransactionError(`Utxo outputs get ${total.toString()} and ${totalTarget.toString()} is required`);
234
+ }
235
+ outputs.push(new platformvm_1.TransferableOutput(this.transaction._assetId, new platformvm_1.SECPTransferOutput(total.sub(totalTarget), this.transaction._fromAddresses, this.transaction._locktime, this.transaction._threshold)));
236
+ return { inputs, outputs, credentials: credentials.length == 0 ? this.transaction.credentials : credentials };
237
+ }
238
+ }
239
+ exports.DelegatorTxBuilder = DelegatorTxBuilder;
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQW9HO0FBRXBHLDZEQUEwRDtBQUMxRCwrREFhd0M7QUFDeEMseUNBQStCO0FBRS9CLG9EQUE0QjtBQUc1QixNQUFhLGtCQUFtQixTQUFRLHVDQUFrQjtJQU94RDs7O09BR0c7SUFDSCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBMkIsQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksY0FBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQXNCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQXNCO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FB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IE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEF2YWxhbmNoZU5ldHdvcmssIEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBBZGREZWxlZ2F0b3JUeCxcbiAgQmFzZVR4LFxuICBQYXJzZWFibGVPdXRwdXQsXG4gIFBsYXRmb3JtVk1Db25zdGFudHMsXG4gIFNFQ1BPd25lck91dHB1dCxcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgU2VsZWN0Q3JlZGVudGlhbENsYXNzLFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUeCxcbiAgVW5zaWduZWRUeCxcbn0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9wbGF0Zm9ybXZtJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvY29tbW9uJztcblxuZXhwb3J0IGNsYXNzIERlbGVnYXRvclR4QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfbm9kZUlEOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBCTjtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBCTjtcbiAgcHJvdGVjdGVkIF9zdGFrZUFtb3VudDogQk47XG4gIHByb3RlY3RlZCBfcmV3YXJkQWRkcmVzczogQmFzZUFkZHJlc3M7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2luQ29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIGNvbnN0IG5ldHdvcmsgPSBjb2luQ29uZmlnLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaztcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IG5ldyBCTihuZXR3b3JrLm1pblN0YWtlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5hZGREZWxlZ2F0b3I7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgbm9kZUlEKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKHZhbHVlKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gc3RhcnRUaW1lXG4gICAqL1xuICBzdGFydFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVuZFRpbWVcbiAgICovXG4gIGVuZFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX2VuZFRpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgc3Rha2VBbW91bnQodmFsdWU6IEJOIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdmFsdWVCTiA9IEJOLmlzQk4odmFsdWUpID8gdmFsdWUgOiBuZXcgQk4odmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVTdGFrZUFtb3VudCh2YWx1ZUJOKTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IHZhbHVlQk47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBzb3VyY2VcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlQWRkcmVzc30gYWRkcmVzcyBUaGUgc291cmNlIGFjY291bnRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICByZXdhcmRBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5fcmV3YXJkQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogcmVnaW9uIFZhbGlkYXRvcnNcbiAgICovXG5cbiAgLyoqXG4gICAqIHZhbGlkYXRlcyBhIGNvcnJlY3QgTm9kZUlEIGlzIHVzZWRcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgdmFsaWRhdGVOb2RlSUQobm9kZUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW5vZGVJRCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub2RlSUQnKTtcbiAgICB9XG4gICAgaWYgKG5vZGVJRC5zbGljZSgwLCA2KSAhPT0gJ05vZGVJRCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgTm9kZUlEIHRhZycpO1xuICAgIH1cbiAgICBpZiAobm9kZUlELmxlbmd0aCAhPT0gNDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IE5vZGVJRCBoYXMgaW5jb3JyZWN0IGxlbmd0aCcpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICpcbiAgICogICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogRGF0ZTtcbiAgICogICBwcm90ZWN0ZWQgX2VuZFRpbWU6IERhdGU7XG4gICAqICAgMiB3ZWVrcyA9IDEyMDk2MDBcbiAgICogICAxIHllYXIgPSAzMTU1NjkyNlxuICAgKiAgIHVuaXggdGltZSBzdGFtcCBiYXNlZCBvZmYgc2Vjb25kc1xuICAgKi9cbiAgdmFsaWRhdGVTdGFrZUR1cmF0aW9uKHN0YXJ0VGltZTogQk4sIGVuZFRpbWU6IEJOKTogdm9pZCB7XG4gICAgaWYgKGVuZFRpbWUgPCBzdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIGNhbm5vdCBiZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZScpO1xuICAgIH1cbiAgICBpZiAoc3RhcnRUaW1lLmFkZChuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5TdGFrZUR1cmF0aW9uKSkuZ3QoZW5kVGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHR3byB3ZWVrcycpO1xuICAgIH1cbiAgICBpZiAoZW5kVGltZS5ndChzdGFydFRpbWUuYWRkKG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1heFN0YWtlRHVyYXRpb24pKSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG9uZSB5ZWFyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnRcbiAgICovXG4gIHZhbGlkYXRlU3Rha2VBbW91bnQoYW1vdW50OiBCTik6IHZvaWQge1xuICAgIGlmIChhbW91bnQubHQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2UudG9TdHJpbmcoKSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaW5pbXVtIHN0YWtpbmcgYW1vdW50IGlzIDIsMDAwIEFWQVgnKTtcbiAgICB9XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICBpbml0QnVpbGRlcih0eDogVHgpOiB0aGlzIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgYmFzZVR4OiBCYXNlVHggPSB0eC5nZXRVbnNpZ25lZFR4KCkuZ2V0VHJhbnNhY3Rpb24oKTtcbiAgICBpZiAoIXRoaXMudmVyaWZ5VHhUeXBlKGJhc2VUeCkpIHtcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZUlEID0gYmFzZVR4LmdldE5vZGVJRFN0cmluZygpO1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IGJhc2VUeC5nZXRTdGFydFRpbWUoKTtcbiAgICB0aGlzLl9lbmRUaW1lID0gYmFzZVR4LmdldEVuZFRpbWUoKTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IGJhc2VUeC5nZXRTdGFrZUFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gdGhpcy5yZWNvdmVyVXR4b3MoYmFzZVR4LmdldElucygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuQUREVkFMSURBVE9SVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBEZWxlZ2F0b3JUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKGJhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheHBUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgY3JlZGVudGlhbHMgfSA9IHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgQWRkRGVsZWdhdG9yVHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbWVtbyxcbiAgICAgICAgICAgIHV0aWxzLk5vZGVJRFN0cmluZ1RvQnVmZmVyKHRoaXMuX25vZGVJRCksXG4gICAgICAgICAgICB0aGlzLl9zdGFydFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9lbmRUaW1lLFxuICAgICAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgICAgICBbdGhpcy5zdGFrZVRyYW5zZmVyT3V0KCldLFxuICAgICAgICAgICAgdGhpcy5yZXdhcmRPd25lcnNPdXRwdXQoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY3JlZGVudGlhbHNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YWtlVHJhbnNmZXJPdXQoKTogVHJhbnNmZXJhYmxlT3V0cHV0IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyYWJsZU91dHB1dChcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmV3YXJkT3duZXJzT3V0cHV0KCk6IFBhcnNlYWJsZU91dHB1dCB7XG4gICAgcmV0dXJuIG5ldyBQYXJzZWFibGVPdXRwdXQoXG4gICAgICBuZXcgU0VDUE93bmVyT3V0cHV0KHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnB1dHMgY2FuIGJlIGNvbnRyb2xsZWQgYnV0IG91dHB1dHMgZ2V0IHJlb3JkZXJlZCBpbiB0cmFuc2FjdGlvbnNcbiAgICogSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1hcHBpbmcgaXMgYWx3YXlzIGNvcnJlY3Qgd2UgY3JlYXRlIGFuIGFkZHJlc3NJbmR4IHdoaWNoIG1hdGNoZXMgdG8gdGhlIGFwcHJvcGlhdGVcbiAgICogc2lnbmF0dXJlSWR4XG4gICAqIEBwYXJhbSBpbnB1dHNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlY292ZXJVdHhvcyhpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10pOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHNlY3BJbnB1dDogU0VDUFRyYW5zZmVySW5wdXQgPSBpbnB1dC5nZXRJbnB1dCgpIGFzIFNFQ1BUcmFuc2ZlcklucHV0O1xuICAgICAgLy8gT3JkZXIgQWRkcmVzc2VzIGFzIG91dHB1dCB3YXMgZGVmaW5lZC5cbiAgICAgIGNvbnN0IGFkZHJlc3Nlc0luZGV4OiBudW1iZXJbXSA9IHNlY3BJbnB1dC5nZXRTaWdJZHhzKCkubWFwKChzKSA9PiBzLnRvQnVmZmVyKCkucmVhZFVJbnQzMkJFKDApKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0SUQ6IDcsXG4gICAgICAgIG91dHB1dGlkeDogdXRpbHMuY2I1OEVuY29kZShpbnB1dC5nZXRPdXRwdXRJZHgoKSksXG4gICAgICAgIHR4aWQ6IHV0aWxzLmNiNThFbmNvZGUoaW5wdXQuZ2V0VHhJRCgpKSxcbiAgICAgICAgYW1vdW50OiBzZWNwSW5wdXQuZ2V0QW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgdGhyZXNob2xkOiB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQsXG4gICAgICAgIGFkZHJlc3NlczogW10sXG4gICAgICAgIGFkZHJlc3Nlc0luZGV4LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgbXVzdCBiZSAyIGFuZCBzaW5jZSBvdXRwdXQgYWx3YXlzIGdldCByZW9yZGVyZWQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGFsd2F5cyBhZGQgc2lnbmF0dXJlcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvblxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGZvciB0aGUgc2lnbmF0dXJlLCB3ZSB1c2UgdGhlIG91cHV0J3MgYWRkcmVzc2VzIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlSWR4IGluIHRoZSBvcmRlciB0aGF0IHdlIGRlc2lyZVxuICAgKiAwOiB1c2VyIGtleSwgMTogcmVjb3Zlcnkga2V5LCAyOiBoc20ga2V5XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dCgpOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG4gICAgY29uc3QgYWRkcmVzc2VzID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGIpID0+XG4gICAgICB1dGlscy5hZGRyZXNzVG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5ocnAsIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuYWxpYXMsIGIpXG4gICAgKTtcbiAgICBsZXQgdG90YWw6IEJOID0gbmV3IEJOKDApO1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gdGhpcy5fc3Rha2VBbW91bnQuY2xvbmUoKS5hZGQodGhpcy50cmFuc2FjdGlvbi5fdHhGZWUpO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKG91dHB1dHMpID0+IHtcbiAgICAgIGlmICghb3V0cHV0cy5hZGRyZXNzZXNJbmRleCB8fCBvdXRwdXRzLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIG91dHB1dHMuYWRkcmVzc2VzSW5kZXggPSBhZGRyZXNzZXMubWFwKChhKSA9PiBvdXRwdXRzLmFkZHJlc3Nlcy5pbmRleE9mKGEpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAob3V0cHV0KSA9PlxuICAgICAgICAgIG91dHB1dC50aHJlc2hvbGQgPT09IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCAmJlxuICAgICAgICAgIChvdXRwdXQuYWRkcmVzc2VzSW5kZXg/Lmxlbmd0aCA9PSAzIHx8ICFvdXRwdXQuYWRkcmVzc2VzSW5kZXg/LmluY2x1ZGVzKC0xKSlcbiAgICAgIClcbiAgICAgIC5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICAgICAgaWYgKG91dHB1dC5vdXRwdXRJRCA9PT0gNyAmJiB0b3RhbC5sdGUodG90YWxUYXJnZXQpKSB7XG4gICAgICAgICAgY29uc3QgdHhpZEJ1ZiA9IHV0aWxzLmNiNThEZWNvZGUob3V0cHV0LnR4aWQpO1xuICAgICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4ob3V0cHV0LmFtb3VudCk7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0aWR4ID0gdXRpbHMuY2I1OERlY29kZShvdXRwdXQub3V0cHV0aWR4KTtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IG91dHB1dC5hZGRyZXNzZXNJbmRleCA/PyBbXTtcbiAgICAgICAgICBjb25zdCBpc1Jhd1V0eG9zID0gb3V0cHV0LmFkZHJlc3Nlcy5sZW5ndGggPT0gMDtcbiAgICAgICAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMSA6IDA7XG4gICAgICAgICAgdG90YWwgPSB0b3RhbC5hZGQoYW10KTtcblxuICAgICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgICBpZiAoaXNSYXdVdHhvcykge1xuICAgICAgICAgICAgYWRkcmVzc2VzSW5kZXguZm9yRWFjaCgoaSkgPT4gc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGksIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbaV0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdID4gYWRkcmVzc2VzSW5kZXhbMl0pIHtcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4WzJdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzWzJdKTtcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KFxuICAgICAgICAgICAgICAgIGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY3JlZGVudGlhbHMucHVzaChcbiAgICAgICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgICAgIFsnJywgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyldLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KFxuICAgICAgICAgICAgICAgIGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4WzJdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzWzJdKTtcbiAgICAgICAgICAgICAgY3JlZGVudGlhbHMucHVzaChcbiAgICAgICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgICAgIFt0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdLnRvU3RyaW5nKCdoZXgnKSwgJyddLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlucHV0OiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgICAgICAgIHR4aWRCdWYsXG4gICAgICAgICAgICBvdXRwdXRpZHgsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXRcbiAgICAgICAgICApO1xuICAgICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgaWYgKHRvdGFsLmx0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVXR4byBvdXRwdXRzIGdldCAke3RvdGFsLnRvU3RyaW5nKCl9IGFuZCAke3RvdGFsVGFyZ2V0LnRvU3RyaW5nKCl9IGlzIHJlcXVpcmVkYCk7XG4gICAgfVxuICAgIG91dHB1dHMucHVzaChcbiAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgIG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgICAgdG90YWwuc3ViKHRvdGFsVGFyZ2V0KSxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4geyBpbnB1dHMsIG91dHB1dHMsIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscy5sZW5ndGggPT0gMCA/IHRoaXMudHJhbnNhY3Rpb24uY3JlZGVudGlhbHMgOiBjcmVkZW50aWFscyB9O1xuICB9XG59XG4iXX0=
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,gBAAgB,EAAE,MAAM;CAIrC;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAIjD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidFeeError = exports.AddressValidationError = void 0;
4
+ const sdk_core_1 = require("@bitgo/sdk-core");
5
+ class AddressValidationError extends sdk_core_1.BuildTransactionError {
6
+ constructor(malformedAddress) {
7
+ super(`The address '${malformedAddress}' is not a well-formed dot address`);
8
+ this.name = AddressValidationError.name;
9
+ }
10
+ }
11
+ exports.AddressValidationError = AddressValidationError;
12
+ class InvalidFeeError extends sdk_core_1.BuildTransactionError {
13
+ constructor(type, expectedType) {
14
+ super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
15
+ this.name = InvalidFeeError.name;
16
+ }
17
+ }
18
+ exports.InvalidFeeError = InvalidFeeError;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQXdEO0FBRXhELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLG9DQUFvQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWRkcmVzc1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1hbGZvcm1lZEFkZHJlc3M6IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgYWRkcmVzcyAnJHttYWxmb3JtZWRBZGRyZXNzfScgaXMgbm90IGEgd2VsbC1mb3JtZWQgZG90IGFkZHJlc3NgKTtcbiAgICB0aGlzLm5hbWUgPSBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLm5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRGZWVFcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGV4cGVjdGVkVHlwZT86IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgc3BlY2lmaWVkIHR5cGU6IFwiJHt0eXBlfVwiIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgdGhlIHR5cGU6IFwiJHtleHBlY3RlZFR5cGV9XCJgKTtcbiAgICB0aGlzLm5hbWUgPSBJbnZhbGlkRmVlRXJyb3IubmFtZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,42 @@
1
+ import { Entry, TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo/sdk-core';
2
+ export interface TransactionExplanation extends BaseTransactionExplanation {
3
+ type: TransactionType;
4
+ }
5
+ /**
6
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
7
+ */
8
+ export declare enum MethodNames {
9
+ addDelegator = 0,
10
+ addValidator = 1
11
+ }
12
+ /**
13
+ * The transaction data returned from the toJson() function of a transaction
14
+ */
15
+ export interface TxData {
16
+ id: string;
17
+ type: TransactionType;
18
+ fromAddresses: string[];
19
+ threshold: number;
20
+ locktime: string;
21
+ memo: string;
22
+ signatures: string[];
23
+ outputs: Entry[];
24
+ }
25
+ /**
26
+ * Decoded UTXO object. This is for a single utxo
27
+ *
28
+ * @param {number} outputID
29
+ * @param {string} amount Amount as a Big Number string
30
+ * @param {string} txid Transaction ID encoded as cb58
31
+ * @param {string} outputidx Output index as a string
32
+ */
33
+ export declare type DecodedUtxoObj = {
34
+ outputID: number;
35
+ amount: string;
36
+ txid: string;
37
+ outputidx: string;
38
+ threshold: number;
39
+ addresses: string[];
40
+ addressesIndex?: number[];
41
+ };
42
+ //# sourceMappingURL=iface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/G,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,oBAAY,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MethodNames = void 0;
4
+ /**
5
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
6
+ */
7
+ var MethodNames;
8
+ (function (MethodNames) {
9
+ MethodNames[MethodNames["addDelegator"] = 0] = "addDelegator";
10
+ MethodNames[MethodNames["addValidator"] = 1] = "addValidator";
11
+ })(MethodNames = exports.MethodNames || (exports.MethodNames = {}));
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BOztHQUVHO0FBQ0gsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWiw2REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50cnksIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xufVxuXG4vKipcbiAqIE1ldGhvZCBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZC4gTmFtZXMgY2hhbmdlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uIGUuZyAnYm9uZCcgZm9yIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIE1ldGhvZE5hbWVzIHtcbiAgYWRkRGVsZWdhdG9yLFxuICBhZGRWYWxpZGF0b3IsXG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgZnJvbUFkZHJlc3Nlczogc3RyaW5nW107XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBsb2NrdGltZTogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBvdXRwdXRzOiBFbnRyeVtdO1xufVxuXG4vKipcbiAqIERlY29kZWQgVVRYTyBvYmplY3QuIFRoaXMgaXMgZm9yIGEgc2luZ2xlIHV0eG9cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gb3V0cHV0SURcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgQW1vdW50IGFzIGEgQmlnIE51bWJlciBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eGlkIFRyYW5zYWN0aW9uIElEIGVuY29kZWQgYXMgY2I1OFxuICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dGlkeCBPdXRwdXQgaW5kZXggYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IHR5cGUgRGVjb2RlZFV0eG9PYmogPSB7XG4gIG91dHB1dElEOiBudW1iZXI7XG4gIGFtb3VudDogc3RyaW5nO1xuICB0eGlkOiBzdHJpbmc7XG4gIG91dHB1dGlkeDogc3RyaW5nO1xuICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgYWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgYWRkcmVzc2VzSW5kZXg/OiBudW1iZXJbXTtcbn07XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import Utils from './utils';
2
+ export * from './iface';
3
+ export { KeyPair } from './keyPair';
4
+ export { Transaction } from './transaction';
5
+ export { TransactionBuilder } from './transactionBuilder';
6
+ export { TransactionBuilderFactory } from './transactionBuilderFactory';
7
+ export * from './iface';
8
+ export { Utils };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Utils = exports.TransactionBuilderFactory = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
17
+ const utils_1 = __importDefault(require("./utils"));
18
+ exports.Utils = utils_1.default;
19
+ __exportStar(require("./iface"), exports);
20
+ var keyPair_1 = require("./keyPair");
21
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
22
+ var transaction_1 = require("./transaction");
23
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
24
+ var transactionBuilder_1 = require("./transactionBuilder");
25
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
26
+ var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
27
+ Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
28
+ __exportStar(require("./iface"), exports);
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFPbkIsZ0JBUEYsZUFBSyxDQU9FO0FBTmQsMENBQXdCO0FBQ3hCLHFDQUFvQztBQUEzQixrR0FBQSxPQUFPLE9BQUE7QUFDaEIsNkNBQTRDO0FBQW5DLDBHQUFBLFdBQVcsT0FBQTtBQUNwQiwyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBO0FBQ2xDLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaWZhY2UnO1xuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2lmYWNlJztcbmV4cG9ydCB7IFV0aWxzIH07XG4iXX0=
@@ -1,6 +1,9 @@
1
+ /// <reference types="node" />
1
2
  import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo/sdk-core';
2
- export declare const testnet = "fuji";
3
- export declare const mainnet = "avax";
3
+ export declare enum addressFormat {
4
+ testnet = "fuji",
5
+ mainnet = "avax"
6
+ }
4
7
  export declare class KeyPair extends Secp256k1ExtendedKeyPair {
5
8
  /**
6
9
  * Public constructor. By default, creates a key pair with a random master seed.
@@ -29,6 +32,7 @@ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
29
32
  /**
30
33
  * Get an Avalanche P-Chain public mainnet address
31
34
  *
35
+ * @param {string} format - avalanche hrp - select Mainnet(avax) or Testnet(fuji) for the address
32
36
  * @returns {string} The mainnet address derived from the public key
33
37
  */
34
38
  getAddress(format?: string): string;
@@ -39,5 +43,12 @@ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
39
43
  * @returns {string} The address derived from the public key and hrp
40
44
  */
41
45
  getAvaxPAddress(hrp: string): string;
46
+ /**
47
+ * Get an Avalanche P-Chain public mainnet address
48
+ *
49
+ * @param {string} format - avalanche hrp - select Mainnet(avax) or Testnet(fuji) for the address
50
+ * @returns {string} The mainnet address derived from the public key
51
+ */
52
+ getAddressBuffer(): Buffer;
42
53
  }
43
54
  //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EAMX,cAAc,EACd,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AASzB,oBAAY,aAAa;IACvB,OAAO,SAAS;IAChB,OAAO,SAAS;CACjB;AAED,qBAAa,OAAQ,SAAQ,wBAAwB;IACnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAoBnC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAe3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkB1C;;;;OAIG;IACH,OAAO,IAAI,WAAW;IAOtB;;;;;OAKG;IACH,UAAU,CAAC,MAAM,SAAY,GAAG,MAAM;IAGtC;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMpC;;;;;OAKG;IACH,gBAAgB,IAAI,MAAM;CAI3B"}