@bitgo/sdk-coin-avaxp 5.2.13 → 5.2.15

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 (133) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +6 -6
  3. package/LICENSE +0 -191
  4. package/dist/src/avaxp.d.ts +0 -91
  5. package/dist/src/avaxp.d.ts.map +0 -1
  6. package/dist/src/avaxp.js +0 -343
  7. package/dist/src/iface.d.ts +0 -42
  8. package/dist/src/iface.d.ts.map +0 -1
  9. package/dist/src/iface.js +0 -3
  10. package/dist/src/index.d.ts +0 -6
  11. package/dist/src/index.d.ts.map +0 -1
  12. package/dist/src/index.js +0 -45
  13. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -21
  14. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +0 -1
  15. package/dist/src/lib/atomicInCTransactionBuilder.js +0 -49
  16. package/dist/src/lib/atomicTransactionBuilder.d.ts +0 -38
  17. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +0 -1
  18. package/dist/src/lib/atomicTransactionBuilder.js +0 -129
  19. package/dist/src/lib/delegatorTxBuilder.d.ts +0 -95
  20. package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
  21. package/dist/src/lib/delegatorTxBuilder.js +0 -285
  22. package/dist/src/lib/deprecatedTransaction.d.ts +0 -98
  23. package/dist/src/lib/deprecatedTransaction.d.ts.map +0 -1
  24. package/dist/src/lib/deprecatedTransaction.js +0 -344
  25. package/dist/src/lib/deprecatedTransactionBuilder.d.ts +0 -114
  26. package/dist/src/lib/deprecatedTransactionBuilder.d.ts.map +0 -1
  27. package/dist/src/lib/deprecatedTransactionBuilder.js +0 -210
  28. package/dist/src/lib/errors.d.ts +0 -8
  29. package/dist/src/lib/errors.d.ts.map +0 -1
  30. package/dist/src/lib/errors.js +0 -19
  31. package/dist/src/lib/exportInCTxBuilder.d.ts +0 -55
  32. package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
  33. package/dist/src/lib/exportInCTxBuilder.js +0 -159
  34. package/dist/src/lib/exportTxBuilder.d.ts +0 -33
  35. package/dist/src/lib/exportTxBuilder.d.ts.map +0 -1
  36. package/dist/src/lib/exportTxBuilder.js +0 -88
  37. package/dist/src/lib/iface.d.ts +0 -68
  38. package/dist/src/lib/iface.d.ts.map +0 -1
  39. package/dist/src/lib/iface.js +0 -20
  40. package/dist/src/lib/importInCTxBuilder.d.ts +0 -44
  41. package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
  42. package/dist/src/lib/importInCTxBuilder.js +0 -131
  43. package/dist/src/lib/importTxBuilder.d.ts +0 -18
  44. package/dist/src/lib/importTxBuilder.d.ts.map +0 -1
  45. package/dist/src/lib/importTxBuilder.js +0 -67
  46. package/dist/src/lib/index.d.ts +0 -11
  47. package/dist/src/lib/index.d.ts.map +0 -1
  48. package/dist/src/lib/index.js +0 -37
  49. package/dist/src/lib/keyPair.d.ts +0 -58
  50. package/dist/src/lib/keyPair.d.ts.map +0 -1
  51. package/dist/src/lib/keyPair.js +0 -150
  52. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -154
  53. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
  54. package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -452
  55. package/dist/src/lib/transaction.d.ts +0 -78
  56. package/dist/src/lib/transaction.d.ts.map +0 -1
  57. package/dist/src/lib/transaction.js +0 -254
  58. package/dist/src/lib/transactionBuilder.d.ts +0 -71
  59. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  60. package/dist/src/lib/transactionBuilder.js +0 -138
  61. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -57
  62. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  63. package/dist/src/lib/transactionBuilderFactory.js +0 -178
  64. package/dist/src/lib/utils.d.ts +0 -184
  65. package/dist/src/lib/utils.d.ts.map +0 -1
  66. package/dist/src/lib/utils.js +0 -378
  67. package/dist/src/lib/utxoEngine.d.ts +0 -53
  68. package/dist/src/lib/utxoEngine.d.ts.map +0 -1
  69. package/dist/src/lib/utxoEngine.js +0 -112
  70. package/dist/src/lib/validatorTxBuilder.d.ts +0 -37
  71. package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
  72. package/dist/src/lib/validatorTxBuilder.js +0 -69
  73. package/dist/src/register.d.ts +0 -3
  74. package/dist/src/register.d.ts.map +0 -1
  75. package/dist/src/register.js +0 -11
  76. package/dist/src/tavaxp.d.ts +0 -9
  77. package/dist/src/tavaxp.d.ts.map +0 -1
  78. package/dist/src/tavaxp.js +0 -14
  79. package/dist/test/resources/avaxp.d.ts +0 -259
  80. package/dist/test/resources/avaxp.d.ts.map +0 -1
  81. package/dist/test/resources/avaxp.js +0 -1093
  82. package/dist/test/resources/errors.d.ts +0 -19
  83. package/dist/test/resources/errors.d.ts.map +0 -1
  84. package/dist/test/resources/errors.js +0 -22
  85. package/dist/test/resources/keychains.d.ts +0 -18
  86. package/dist/test/resources/keychains.d.ts.map +0 -1
  87. package/dist/test/resources/keychains.js +0 -30
  88. package/dist/test/resources/tx/exportC.d.ts +0 -14
  89. package/dist/test/resources/tx/exportC.d.ts.map +0 -1
  90. package/dist/test/resources/tx/exportC.js +0 -21
  91. package/dist/test/resources/tx/importC.d.ts +0 -29
  92. package/dist/test/resources/tx/importC.d.ts.map +0 -1
  93. package/dist/test/resources/tx/importC.js +0 -42
  94. package/dist/test/resources/tx/importP.d.ts +0 -29
  95. package/dist/test/resources/tx/importP.d.ts.map +0 -1
  96. package/dist/test/resources/tx/importP.js +0 -42
  97. package/dist/test/unit/avaxp.d.ts +0 -2
  98. package/dist/test/unit/avaxp.d.ts.map +0 -1
  99. package/dist/test/unit/avaxp.js +0 -732
  100. package/dist/test/unit/lib/exportC2PTxBuilder.d.ts +0 -2
  101. package/dist/test/unit/lib/exportC2PTxBuilder.d.ts.map +0 -1
  102. package/dist/test/unit/lib/exportC2PTxBuilder.js +0 -125
  103. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +0 -2
  104. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +0 -1
  105. package/dist/test/unit/lib/exportP2CTxBuilder.js +0 -183
  106. package/dist/test/unit/lib/importC2PTxBuilder.d.ts +0 -2
  107. package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +0 -1
  108. package/dist/test/unit/lib/importC2PTxBuilder.js +0 -99
  109. package/dist/test/unit/lib/importP2CTxBuilder.d.ts +0 -2
  110. package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +0 -1
  111. package/dist/test/unit/lib/importP2CTxBuilder.js +0 -137
  112. package/dist/test/unit/lib/keyPair.d.ts +0 -2
  113. package/dist/test/unit/lib/keyPair.d.ts.map +0 -1
  114. package/dist/test/unit/lib/keyPair.js +0 -186
  115. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts +0 -2
  116. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
  117. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +0 -341
  118. package/dist/test/unit/lib/signFlowTestSuit.d.ts +0 -20
  119. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +0 -1
  120. package/dist/test/unit/lib/signFlowTestSuit.js +0 -80
  121. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +0 -2
  122. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +0 -1
  123. package/dist/test/unit/lib/transactionBuilderFactory.js +0 -179
  124. package/dist/test/unit/lib/utils.d.ts +0 -2
  125. package/dist/test/unit/lib/utils.d.ts.map +0 -1
  126. package/dist/test/unit/lib/utils.js +0 -83
  127. package/dist/test/unit/lib/utxoEngine.d.ts +0 -2
  128. package/dist/test/unit/lib/utxoEngine.d.ts.map +0 -1
  129. package/dist/test/unit/lib/utxoEngine.js +0 -168
  130. package/dist/test/unit/lib/validateTxBuilder.d.ts +0 -2
  131. package/dist/test/unit/lib/validateTxBuilder.d.ts.map +0 -1
  132. package/dist/test/unit/lib/validateTxBuilder.js +0 -327
  133. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/transactionBuilderFactory.ts"],"names":[],"mappings":""}
@@ -1,179 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const assert_1 = __importDefault(require("assert"));
40
- const testData = __importStar(require("../../resources/avaxp"));
41
- const errorMessage = __importStar(require("../../resources/errors"));
42
- const lib_1 = require("../../../src/lib");
43
- const statics_1 = require("@bitgo/statics");
44
- const sdk_core_1 = require("@bitgo/sdk-core");
45
- const importP_1 = require("../../resources/tx/importP");
46
- const importC_1 = require("../../resources/tx/importC");
47
- const exportC_1 = require("../../resources/tx/exportC");
48
- const avaxp_1 = require("../../resources/avaxp");
49
- describe('AvaxP Transaction Builder Factory', () => {
50
- const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'));
51
- describe('should validate', () => {
52
- it('an empty raw transaction', () => {
53
- assert_1.default.throws(() => {
54
- factory.from('');
55
- }, (e) => e.message === errorMessage.ERROR_EMPTY_RAW_TRANSACTION);
56
- });
57
- it('an invalid raw transfer transaction', () => {
58
- assert_1.default.throws(() => {
59
- factory.from(testData.INVALID_RAW_TRANSACTION);
60
- }, (e) => e.message === errorMessage.ERROR_RAW_PARSING);
61
- });
62
- it('Should validate a correct raw tx', () => {
63
- factory.from(testData.ADDVALIDATOR_SAMPLES.unsignedTxHex);
64
- // should not throw a error!
65
- });
66
- it("Shouldn't get a wallet initialization builder", () => {
67
- assert_1.default.throws(() => {
68
- factory.getWalletInitializationBuilder();
69
- }, (e) => e.message === errorMessage.ERROR_WALLET_INITIALIZATION);
70
- });
71
- });
72
- describe('Transaction readable', () => {
73
- const rawTxs = [
74
- testData.ADD_VALIDATOR_ID_SAMPLE.fullsigntxHex,
75
- testData.EXPORT_P_2_C.fullsigntxHex,
76
- testData.EXPORT_P_2_C.halfsigntxHex,
77
- testData.EXPORT_P_2_C.unsignedTxHex,
78
- importP_1.IMPORT_P.fullsigntxHex,
79
- importP_1.IMPORT_P.halfsigntxHex,
80
- importP_1.IMPORT_P.unsignedTxHex,
81
- ];
82
- let tx;
83
- before(async () => {
84
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(testData.ADD_VALIDATOR_ID_SAMPLE.fullsigntxHex);
85
- tx = await txBuilder.build();
86
- });
87
- it('Should json stringifiy any transaction object', async () => {
88
- for (const rawTx of rawTxs) {
89
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(rawTx);
90
- const tx = await txBuilder.build();
91
- const txJson = tx.toJson();
92
- (0, assert_1.default)(typeof JSON.stringify(txJson), 'string');
93
- }
94
- });
95
- it('Should json stringifiy addValidator transaction', async () => {
96
- const txJson = tx.toJson();
97
- (0, assert_1.default)(typeof JSON.stringify(tx.toJson()), 'string');
98
- txJson.id.should.equal(testData.ADD_VALIDATOR_ID_SAMPLE.txid);
99
- });
100
- it('Should get a txid', async () => {
101
- tx.id.should.equal(testData.ADD_VALIDATOR_ID_SAMPLE.txid);
102
- });
103
- });
104
- describe('should explains transaction', () => {
105
- it('should explains a Signed AddValidatorTx', async () => {
106
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(testData.ADDVALIDATOR_SAMPLES.fullsigntxHex);
107
- const tx = await txBuilder.build();
108
- const txExplain = tx.explainTransaction();
109
- txExplain.outputAmount.should.equal(testData.ADDVALIDATOR_SAMPLES.minValidatorStake);
110
- txExplain.type.should.equal(sdk_core_1.TransactionType.AddValidator);
111
- txExplain.outputs[0].address.should.equal(testData.ADDVALIDATOR_SAMPLES.nodeID);
112
- });
113
- it('should explains a Half Signed AddValidatorTx', async () => {
114
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(testData.ADDVALIDATOR_SAMPLES.halfsigntxHex);
115
- const tx = await txBuilder.build();
116
- const txExplain = tx.explainTransaction();
117
- txExplain.outputAmount.should.equal(testData.ADDVALIDATOR_SAMPLES.minValidatorStake);
118
- txExplain.type.should.equal(sdk_core_1.TransactionType.AddValidator);
119
- txExplain.outputs[0].address.should.equal(testData.ADDVALIDATOR_SAMPLES.nodeID);
120
- });
121
- it('should explains a unsigned AddValidatorTx', async () => {
122
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(testData.ADDVALIDATOR_SAMPLES.unsignedTxHex);
123
- const tx = await txBuilder.build();
124
- const txExplain = tx.explainTransaction();
125
- txExplain.outputAmount.should.equal(testData.ADDVALIDATOR_SAMPLES.minValidatorStake);
126
- txExplain.type.should.equal(sdk_core_1.TransactionType.AddValidator);
127
- txExplain.outputs[0].address.should.equal(testData.ADDVALIDATOR_SAMPLES.nodeID);
128
- });
129
- });
130
- describe('Cross chain transfer has source and destination chains', () => {
131
- const p2cTxs = [
132
- importP_1.IMPORT_P.fullsigntxHex,
133
- importP_1.IMPORT_P.halfsigntxHex,
134
- importP_1.IMPORT_P.unsignedTxHex,
135
- exportC_1.EXPORT_C.fullsigntxHex,
136
- exportC_1.EXPORT_C.unsignedTxHex,
137
- ];
138
- const c2pTxs = [
139
- importC_1.IMPORT_C.fullsigntxHex,
140
- importC_1.IMPORT_C.halfsigntxHex,
141
- importC_1.IMPORT_C.unsignedTxHex,
142
- testData.EXPORT_P_2_C.fullsigntxHex,
143
- testData.EXPORT_P_2_C.halfsigntxHex,
144
- testData.EXPORT_P_2_C.unsignedTxHex,
145
- ];
146
- const noCrossChainTxs = [
147
- avaxp_1.ADDVALIDATOR_SAMPLES.fullsigntxHex,
148
- avaxp_1.ADDVALIDATOR_SAMPLES.halfsigntxHex,
149
- avaxp_1.ADDVALIDATOR_SAMPLES.unsignedTxHex,
150
- ];
151
- async function toJson(txHex) {
152
- const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(txHex);
153
- const tx = await txBuilder.build();
154
- return tx.toJson();
155
- }
156
- it('Should json have sourceChain C and destinationChain P', async () => {
157
- for (const rawTx of p2cTxs) {
158
- const txJson = await toJson(rawTx);
159
- txJson.sourceChain.should.equal('C');
160
- txJson.destinationChain.should.equal('P');
161
- }
162
- });
163
- it('Should json have sourceChain P and destinationChain C', async () => {
164
- for (const rawTx of c2pTxs) {
165
- const txJson = await toJson(rawTx);
166
- txJson.sourceChain.should.equal('P');
167
- txJson.destinationChain.should.equal('C');
168
- }
169
- });
170
- it('Should json have not sourceChain either destinationChain ', async () => {
171
- for (const rawTx of noCrossChainTxs) {
172
- const txJson = await toJson(rawTx);
173
- txJson.should.property('sourceChain').be.undefined();
174
- txJson.should.property('destinationChain').be.undefined();
175
- }
176
- });
177
- });
178
- });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixnRUFBa0Q7QUFDbEQscUVBQXVEO0FBQ3ZELDBDQUFxRTtBQUNyRSw0Q0FBdUM7QUFDdkMsOENBQW1FO0FBQ25FLHdEQUFzRDtBQUN0RCx3REFBc0Q7QUFDdEQsd0RBQXNEO0FBQ3RELGlEQUE2RDtBQUU3RCxRQUFRLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO0lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7UUFDL0IsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtZQUNsQyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQixDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLDJCQUEyQixDQUNuRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1lBQzdDLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pELENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxZQUFZLENB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SUFBSSxFQUFFO1lBQ3JFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsV0FBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxnQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN6RSxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2F2YXhwJztcbmltcG9ydCAqIGFzIGVycm9yTWVzc2FnZSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFR4RGF0YSB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBJTVBPUlRfUCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy90eC9pbXBvcnRQJztcbmltcG9ydCB7IElNUE9SVF9DIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3R4L2ltcG9ydEMnO1xuaW1wb3J0IHsgRVhQT1JUX0MgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvdHgvZXhwb3J0Qyc7XG5pbXBvcnQgeyBBRERWQUxJREFUT1JfU0FNUExFUyB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9hdmF4cCc7XG5cbmRlc2NyaWJlKCdBdmF4UCBUcmFuc2FjdGlvbiBCdWlsZGVyIEZhY3RvcnknLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgIGl0KCdhbiBlbXB0eSByYXcgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgZmFjdG9yeS5mcm9tKCcnKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSBlcnJvck1lc3NhZ2UuRVJST1JfRU1QVFlfUkFXX1RSQU5TQUNUSU9OXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGludmFsaWQgcmF3IHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5JTlZBTElEX1JBV19UUkFOU0FDVElPTik7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX1JBV19QQVJTSU5HXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ1Nob3VsZCB2YWxpZGF0ZSBhIGNvcnJlY3QgcmF3IHR4JywgKCkgPT4ge1xuICAgICAgZmFjdG9yeS5mcm9tKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLnVuc2lnbmVkVHhIZXgpO1xuICAgICAgLy8gc2hvdWxkIG5vdCB0aHJvdyBhIGVycm9yIVxuICAgIH0pO1xuXG4gICAgaXQoXCJTaG91bGRuJ3QgZ2V0IGEgd2FsbGV0IGluaXRpYWxpemF0aW9uIGJ1aWxkZXJcIiwgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZhY3RvcnkuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX1dBTExFVF9JTklUSUFMSVpBVElPTlxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIHJlYWRhYmxlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJhd1R4cyA9IFtcbiAgICAgIHRlc3REYXRhLkFERF9WQUxJREFUT1JfSURfU0FNUExFLmZ1bGxzaWdudHhIZXgsXG4gICAgICB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuZnVsbHNpZ250eEhleCxcbiAgICAgIHRlc3REYXRhLkVYUE9SVF9QXzJfQy5oYWxmc2lnbnR4SGV4LFxuICAgICAgdGVzdERhdGEuRVhQT1JUX1BfMl9DLnVuc2lnbmVkVHhIZXgsXG4gICAgICBJTVBPUlRfUC5mdWxsc2lnbnR4SGV4LFxuICAgICAgSU1QT1JUX1AuaGFsZnNpZ250eEhleCxcbiAgICAgIElNUE9SVF9QLnVuc2lnbmVkVHhIZXgsXG4gICAgXTtcbiAgICBsZXQgdHg6IEJhc2VUcmFuc2FjdGlvbjtcbiAgICBiZWZvcmUoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgdGVzdERhdGEuQUREX1ZBTElEQVRPUl9JRF9TQU1QTEUuZnVsbHNpZ250eEhleFxuICAgICAgKTtcbiAgICAgIHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIGpzb24gc3RyaW5naWZpeSBhbnkgdHJhbnNhY3Rpb24gb2JqZWN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCByYXdUeCBvZiByYXdUeHMpIHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShyYXdUeCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICBhc3NlcnQodHlwZW9mIEpTT04uc3RyaW5naWZ5KHR4SnNvbiksICdzdHJpbmcnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQganNvbiBzdHJpbmdpZml5IGFkZFZhbGlkYXRvciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgYXNzZXJ0KHR5cGVvZiBKU09OLnN0cmluZ2lmeSh0eC50b0pzb24oKSksICdzdHJpbmcnKTtcbiAgICAgIHR4SnNvbi5pZC5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREX1ZBTElEQVRPUl9JRF9TQU1QTEUudHhpZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIGdldCBhIHR4aWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREX1ZBTElEQVRPUl9JRF9TQU1QTEUudHhpZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgZXhwbGFpbnMgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBleHBsYWlucyBhIFNpZ25lZCBBZGRWYWxpZGF0b3JUeCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20oXG4gICAgICAgIHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLmZ1bGxzaWdudHhIZXhcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5taW5WYWxpZGF0b3JTdGFrZSk7XG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcik7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy5ub2RlSUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWlucyBhIEhhbGYgU2lnbmVkIEFkZFZhbGlkYXRvclR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShcbiAgICAgICAgdGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMuaGFsZnNpZ250eEhleFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm1pblZhbGlkYXRvclN0YWtlKTtcbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkVmFsaWRhdG9yKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFERFZBTElEQVRPUl9TQU1QTEVTLm5vZGVJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW5zIGEgdW5zaWduZWQgQWRkVmFsaWRhdG9yVHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKFxuICAgICAgICB0ZXN0RGF0YS5BRERWQUxJREFUT1JfU0FNUExFUy51bnNpZ25lZFR4SGV4XG4gICAgICApO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMubWluVmFsaWRhdG9yU3Rha2UpO1xuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3IpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwodGVzdERhdGEuQUREVkFMSURBVE9SX1NBTVBMRVMubm9kZUlEKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Nyb3NzIGNoYWluIHRyYW5zZmVyIGhhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGNoYWlucycsICgpID0+IHtcbiAgICBjb25zdCBwMmNUeHMgPSBbXG4gICAgICBJTVBPUlRfUC5mdWxsc2lnbnR4SGV4LFxuICAgICAgSU1QT1JUX1AuaGFsZnNpZ250eEhleCxcbiAgICAgIElNUE9SVF9QLnVuc2lnbmVkVHhIZXgsXG4gICAgICBFWFBPUlRfQy5mdWxsc2lnbnR4SGV4LFxuICAgICAgRVhQT1JUX0MudW5zaWduZWRUeEhleCxcbiAgICBdO1xuXG4gICAgY29uc3QgYzJwVHhzID0gW1xuICAgICAgSU1QT1JUX0MuZnVsbHNpZ250eEhleCxcbiAgICAgIElNUE9SVF9DLmhhbGZzaWdudHhIZXgsXG4gICAgICBJTVBPUlRfQy51bnNpZ25lZFR4SGV4LFxuICAgICAgdGVzdERhdGEuRVhQT1JUX1BfMl9DLmZ1bGxzaWdudHhIZXgsXG4gICAgICB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuaGFsZnNpZ250eEhleCxcbiAgICAgIHRlc3REYXRhLkVYUE9SVF9QXzJfQy51bnNpZ25lZFR4SGV4LFxuICAgIF07XG5cbiAgICBjb25zdCBub0Nyb3NzQ2hhaW5UeHMgPSBbXG4gICAgICBBRERWQUxJREFUT1JfU0FNUExFUy5mdWxsc2lnbnR4SGV4LFxuICAgICAgQUREVkFMSURBVE9SX1NBTVBMRVMuaGFsZnNpZ250eEhleCxcbiAgICAgIEFERFZBTElEQVRPUl9TQU1QTEVTLnVuc2lnbmVkVHhIZXgsXG4gICAgXTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHRvSnNvbih0eEhleDogc3RyaW5nKTogUHJvbWlzZTxUeERhdGE+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20odHhIZXgpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHJldHVybiB0eC50b0pzb24oKTtcbiAgICB9XG5cbiAgICBpdCgnU2hvdWxkIGpzb24gaGF2ZSBzb3VyY2VDaGFpbiBDIGFuZCBkZXN0aW5hdGlvbkNoYWluIFAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHJhd1R4IG9mIHAyY1R4cykge1xuICAgICAgICBjb25zdCB0eEpzb24gPSBhd2FpdCB0b0pzb24ocmF3VHgpO1xuICAgICAgICB0eEpzb24uc291cmNlQ2hhaW4hLnNob3VsZC5lcXVhbCgnQycpO1xuICAgICAgICB0eEpzb24uZGVzdGluYXRpb25DaGFpbiEuc2hvdWxkLmVxdWFsKCdQJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIGpzb24gaGF2ZSBzb3VyY2VDaGFpbiBQIGFuZCBkZXN0aW5hdGlvbkNoYWluIEMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHJhd1R4IG9mIGMycFR4cykge1xuICAgICAgICBjb25zdCB0eEpzb24gPSBhd2FpdCB0b0pzb24ocmF3VHgpO1xuICAgICAgICB0eEpzb24uc291cmNlQ2hhaW4hLnNob3VsZC5lcXVhbCgnUCcpO1xuICAgICAgICB0eEpzb24uZGVzdGluYXRpb25DaGFpbiEuc2hvdWxkLmVxdWFsKCdDJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIGpzb24gaGF2ZSBub3Qgc291cmNlQ2hhaW4gZWl0aGVyIGRlc3RpbmF0aW9uQ2hhaW4gJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCByYXdUeCBvZiBub0Nyb3NzQ2hhaW5UeHMpIHtcbiAgICAgICAgY29uc3QgdHhKc29uID0gYXdhaXQgdG9Kc29uKHJhd1R4KTtcbiAgICAgICAgdHhKc29uLnNob3VsZC5wcm9wZXJ0eSgnc291cmNlQ2hhaW4nKS5iZS51bmRlZmluZWQoKTtcbiAgICAgICAgdHhKc29uLnNob3VsZC5wcm9wZXJ0eSgnZGVzdGluYXRpb25DaGFpbicpLmJlLnVuZGVmaW5lZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- require("should");
37
- const lib_1 = require("../../../src/lib/");
38
- const testData = __importStar(require("../../resources/avaxp"));
39
- const statics_1 = require("@bitgo/statics");
40
- describe('Avaxp Utils', () => {
41
- const network = statics_1.coins.get('tavaxp').network;
42
- const compressed = true;
43
- it('should recover signature', () => {
44
- const keyPair = new lib_1.KeyPair({ prv: testData.SEED_ACCOUNT.privateKeyAvax });
45
- const prv = keyPair.getPrivateKey();
46
- const pub = keyPair.getPublicKey({ compressed });
47
- const message = Buffer.from('Lorem ipsum dolor sit amet. Est maxime iure et odio iusto non aspernatur...', 'hex');
48
- const signature = lib_1.Utils.createSignature(network, message, prv);
49
- lib_1.Utils.recoverySignature(network, message, signature).should.deepEqual(pub);
50
- });
51
- describe('Validation', function () {
52
- it('should validate a public key', () => {
53
- lib_1.Utils.isValidPublicKey(testData.SEED_ACCOUNT.publicKeyCb58).should.be.true();
54
- lib_1.Utils.isValidPublicKey(testData.SEED_ACCOUNT.publicKey).should.be.true();
55
- lib_1.Utils.isValidPublicKey(testData.SEED_ACCOUNT.xPublicKey).should.be.true();
56
- });
57
- it('should fail to validate invalid address', function () {
58
- const address = 'fuji15jamwukfqkwhe8z26tjqxejtjd3jk9vj4kmxwa';
59
- lib_1.Utils.isValidAddress(address).should.be.false();
60
- });
61
- it('should validate an address array', function () {
62
- const validAddresses = [
63
- 'P-fuji15jamwukfqkwhe8z26tjqxejtjd3jk9vj4kmxwa',
64
- 'NodeID-MdteS9U987PY7iwA5Pcz3sKVprJAbAvE7',
65
- 'NodeID-P1KjdPNrap8LHfx5AstcXxsHjk3jbbyF',
66
- ];
67
- lib_1.Utils.isValidAddress(validAddresses).should.be.true();
68
- });
69
- it('should validate an address multiSig string', function () {
70
- const stringMultiSigAddress = 'P-fuji15jamwukfqkwhe8z26tjqxejtjd3jk9vj4kmxwa~NodeID-MdteS9U987PY7iwA5Pcz3sKVprJAbAvE7~NodeID-P1KjdPNrap8LHfx5AstcXxsHjk3jbbyF';
71
- lib_1.Utils.isValidAddress(stringMultiSigAddress).should.be.true();
72
- });
73
- it('should fail to validate an invalid block id', function () {
74
- const block = 'abcdefghijklmnopqrstuvwxyz';
75
- lib_1.Utils.isValidBlockId(block).should.be.false();
76
- });
77
- it('should validate a block id', function () {
78
- const block = 'zGC26Bagj79RBPobK8Hghk9xuqAmME53eEUtM9RJ2yadBxrch';
79
- lib_1.Utils.isValidBlockId(block).should.be.true();
80
- });
81
- });
82
- });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLDJDQUFtRDtBQUNuRCxnRUFBa0Q7QUFDbEQsNENBQXlEO0FBRXpELFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLE1BQU0sT0FBTyxHQUFxQixlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQTJCLENBQUM7SUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xILE1BQU0sU0FBUyxHQUFHLFdBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFJLENBQUMsQ0FBQztRQUNoRSxXQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRTtRQUNyQixFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLFdBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0UsV0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RSxXQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFO1lBQzVDLE1BQU0sT0FBTyxHQUFHLDZDQUE2QyxDQUFDO1lBQzlELFdBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRTtZQUNyQyxNQUFNLGNBQWMsR0FBRztnQkFDckIsK0NBQStDO2dCQUMvQywwQ0FBMEM7Z0JBQzFDLHlDQUF5QzthQUMxQyxDQUFDO1lBRUYsV0FBSyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFO1lBQy9DLE1BQU0scUJBQXFCLEdBQ3pCLGdJQUFnSSxDQUFDO1lBRW5JLFdBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFO1lBQ2hELE1BQU0sS0FBSyxHQUFHLDRCQUE0QixDQUFDO1lBQzNDLFdBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxtREFBbUQsQ0FBQztZQUNsRSxXQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgVXRpbHMsIEtleVBhaXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliLyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvYXZheHAnO1xuaW1wb3J0IHsgQXZhbGFuY2hlTmV0d29yaywgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmRlc2NyaWJlKCdBdmF4cCBVdGlscycsICgpID0+IHtcbiAgY29uc3QgbmV0d29yazogQXZhbGFuY2hlTmV0d29yayA9IGNvaW5zLmdldCgndGF2YXhwJykubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrO1xuICBjb25zdCBjb21wcmVzc2VkID0gdHJ1ZTtcbiAgaXQoJ3Nob3VsZCByZWNvdmVyIHNpZ25hdHVyZScsICgpID0+IHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLlNFRURfQUNDT1VOVC5wcml2YXRlS2V5QXZheCB9KTtcbiAgICBjb25zdCBwcnYgPSBrZXlQYWlyLmdldFByaXZhdGVLZXkoKTtcbiAgICBjb25zdCBwdWIgPSBrZXlQYWlyLmdldFB1YmxpY0tleSh7IGNvbXByZXNzZWQgfSk7XG4gICAgY29uc3QgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKCdMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gRXN0IG1heGltZSBpdXJlIGV0IG9kaW8gaXVzdG8gbm9uIGFzcGVybmF0dXIuLi4nLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gVXRpbHMuY3JlYXRlU2lnbmF0dXJlKG5ldHdvcmssIG1lc3NhZ2UsIHBydiEpO1xuICAgIFV0aWxzLnJlY292ZXJ5U2lnbmF0dXJlKG5ldHdvcmssIG1lc3NhZ2UsIHNpZ25hdHVyZSkuc2hvdWxkLmRlZXBFcXVhbChwdWIpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgcHVibGljIGtleScsICgpID0+IHtcbiAgICAgIFV0aWxzLmlzVmFsaWRQdWJsaWNLZXkodGVzdERhdGEuU0VFRF9BQ0NPVU5ULnB1YmxpY0tleUNiNTgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBVdGlscy5pc1ZhbGlkUHVibGljS2V5KHRlc3REYXRhLlNFRURfQUNDT1VOVC5wdWJsaWNLZXkpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBVdGlscy5pc1ZhbGlkUHVibGljS2V5KHRlc3REYXRhLlNFRURfQUNDT1VOVC54UHVibGljS2V5KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGludmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnZnVqaTE1amFtd3VrZnFrd2hlOHoyNnRqcXhlanRqZDNqazl2ajRrbXh3YSc7XG4gICAgICBVdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYWRkcmVzcyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbGlkQWRkcmVzc2VzID0gW1xuICAgICAgICAnUC1mdWppMTVqYW13dWtmcWt3aGU4ejI2dGpxeGVqdGpkM2prOXZqNGtteHdhJyxcbiAgICAgICAgJ05vZGVJRC1NZHRlUzlVOTg3UFk3aXdBNVBjejNzS1ZwckpBYkF2RTcnLFxuICAgICAgICAnTm9kZUlELVAxS2pkUE5yYXA4TEhmeDVBc3RjWHhzSGprM2piYnlGJyxcbiAgICAgIF07XG5cbiAgICAgIFV0aWxzLmlzVmFsaWRBZGRyZXNzKHZhbGlkQWRkcmVzc2VzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhZGRyZXNzIG11bHRpU2lnIHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHN0cmluZ011bHRpU2lnQWRkcmVzcyA9XG4gICAgICAgICdQLWZ1amkxNWphbXd1a2Zxa3doZTh6MjZ0anF4ZWp0amQzams5dmo0a214d2F+Tm9kZUlELU1kdGVTOVU5ODdQWTdpd0E1UGN6M3NLVnBySkFiQXZFN35Ob2RlSUQtUDFLamRQTnJhcDhMSGZ4NUFzdGNYeHNIamszamJieUYnO1xuXG4gICAgICBVdGlscy5pc1ZhbGlkQWRkcmVzcyhzdHJpbmdNdWx0aVNpZ0FkZHJlc3MpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgYW4gaW52YWxpZCBibG9jayBpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJsb2NrID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcbiAgICAgIFV0aWxzLmlzVmFsaWRCbG9ja0lkKGJsb2NrKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBibG9jayBpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJsb2NrID0gJ3pHQzI2QmFnajc5UkJQb2JLOEhnaGs5eHVxQW1NRTUzZUVVdE05UkoyeWFkQnhyY2gnO1xuICAgICAgVXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2spLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=utxoEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utxoEngine.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/utxoEngine.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -1,168 +0,0 @@
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
- const assert_1 = __importDefault(require("assert"));
7
- require("should");
8
- const utxoEngine_1 = require("../../../src/lib/utxoEngine");
9
- const utils_1 = __importDefault(require("./../../../src/lib/utils"));
10
- describe('AvaxP UTXO engine', () => {
11
- describe('should fail', () => {
12
- const sender = [
13
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
14
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
15
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
16
- ].map((a) => utils_1.default.parseAddress(a));
17
- it('should return empty input for utxos of wrong type', () => {
18
- const utxos = [1, 2, 3, 4].map((n) => ({
19
- outputID: n,
20
- amount: '509999975',
21
- txid: 'CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH',
22
- outputidx: '0',
23
- addresses: [
24
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
25
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
26
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
27
- ],
28
- threshold: 2,
29
- }));
30
- const { inputs } = (0, utxoEngine_1.utxoToInput)(utxos, sender);
31
- inputs.should.be.empty();
32
- });
33
- it('should fail with wrong address', () => {
34
- const utxos = [
35
- {
36
- outputID: 7,
37
- amount: '509999975',
38
- txid: 'CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH',
39
- outputidx: '0',
40
- addresses: [
41
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
42
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
43
- 'P-fuji13pyc89t4x5483fgdfgg9lcnpxz7ggr09vn6m6c',
44
- ],
45
- threshold: 2,
46
- },
47
- ];
48
- assert_1.default.throws(() => (0, utxoEngine_1.utxoToInput)(utxos, sender), (e) => e.message === 'Addresses are inconsistent: CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH');
49
- });
50
- it('should fail with wrong threshold', () => {
51
- const utxos = [
52
- {
53
- outputID: 7,
54
- amount: '509999975',
55
- txid: 'CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH',
56
- outputidx: '0',
57
- addresses: [
58
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
59
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
60
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
61
- ],
62
- threshold: 3,
63
- },
64
- ];
65
- assert_1.default.throws(() => (0, utxoEngine_1.utxoToInput)(utxos, sender), (e) => e.message === 'Threshold is inconsistent');
66
- });
67
- });
68
- describe('2 of 3 signers', () => {
69
- const utxos = [
70
- {
71
- outputID: 7,
72
- amount: '509999975',
73
- txid: 'CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH',
74
- outputidx: '0',
75
- addresses: [
76
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
77
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
78
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
79
- ],
80
- threshold: 2,
81
- },
82
- {
83
- outputID: 7,
84
- amount: '26932830273',
85
- txid: '2VyWNR4q8p7ZnKfaot37SbMBCWHbEbqEca7Af1tiRTArkJMdXt',
86
- outputidx: '0',
87
- addresses: [
88
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
89
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
90
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
91
- ],
92
- threshold: 2,
93
- },
94
- ];
95
- const sender = [
96
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
97
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
98
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
99
- ].map((a) => utils_1.default.parseAddress(a));
100
- const firstSigner = sender[0].toString('hex');
101
- // second signer is Zeros credential.
102
- it('should return credential 2 of 3', () => {
103
- const { inputs } = (0, utxoEngine_1.utxoToInput)(utxos, sender);
104
- inputs.forEach((input, i) => {
105
- const expectedSignature = input.signatures.map((signature) => signature.toBuffer().toString('hex').substring(90));
106
- expectedSignature.should.containEql(firstSigner);
107
- const fistSignatureIdx = input.signaturesIdx[expectedSignature.indexOf(firstSigner)];
108
- utils_1.default.parseAddress(utxos[i].addresses[fistSignatureIdx]).toString('hex').should.be.equal(firstSigner);
109
- });
110
- });
111
- });
112
- describe('4 of 4 signers', () => {
113
- const utxos = [
114
- {
115
- outputID: 7,
116
- amount: '509999975',
117
- txid: 'CEbFa3hCDfMFu8ASZP9rT1s3X2X8wqoPAN258kkStk9JX3wsH',
118
- outputidx: '0',
119
- addresses: [
120
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
121
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
122
- 'P-fuji13pyc89t4x5483fgdfgg9lcnpxz7ggr09vn6m6c',
123
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
124
- ],
125
- threshold: 4,
126
- },
127
- {
128
- outputID: 7,
129
- amount: '26932830273',
130
- txid: '2VyWNR4q8p7ZnKfaot37SbMBCWHbEbqEca7Af1tiRTArkJMdXt',
131
- outputidx: '0',
132
- addresses: [
133
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
134
- 'P-fuji13pyc89t4x5483fgdfgg9lcnpxz7ggr09vn6m6c',
135
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
136
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
137
- ],
138
- threshold: 4,
139
- },
140
- ];
141
- const sender = [
142
- 'P-fuji103cmntssp6qnucejahddy42wcy4qty0uj42822',
143
- 'P-fuji1hdk7ntw0huhqmlhlheme9t7scsy9lhfhw3ywy4',
144
- 'P-fuji1yzpfsdalhfwkq2ceewgs9wv7k0uft40ydpuj59',
145
- 'P-fuji13pyc89t4x5483fgdfgg9lcnpxz7ggr09vn6m6c',
146
- ].map((a) => utils_1.default.parseAddress(a));
147
- const firstSigner = sender[0].toString('hex');
148
- // second signer is Zeros credential.
149
- const thirdSigner = sender[2].toString('hex');
150
- const forthSigner = sender[3].toString('hex');
151
- it('should return credential', () => {
152
- const { inputs } = (0, utxoEngine_1.utxoToInput)(utxos, sender, 4);
153
- inputs.forEach((input, i) => {
154
- const expectedSignature = input.signatures.map((signature) => signature.toBuffer().toString('hex').substring(90));
155
- expectedSignature.should.containEql(firstSigner);
156
- const fistSignatureIdx = input.signaturesIdx[expectedSignature.indexOf(firstSigner)];
157
- utils_1.default.parseAddress(utxos[i].addresses[fistSignatureIdx]).toString('hex').should.be.equal(firstSigner);
158
- expectedSignature.should.containEql(thirdSigner);
159
- const thirdSignatureIdx = input.signaturesIdx[expectedSignature.indexOf(thirdSigner)];
160
- utils_1.default.parseAddress(utxos[i].addresses[thirdSignatureIdx]).toString('hex').should.be.equal(thirdSigner);
161
- expectedSignature.should.containEql(forthSigner);
162
- const forthSignatureIdx = input.signaturesIdx[expectedSignature.indexOf(forthSigner)];
163
- utils_1.default.parseAddress(utxos[i].addresses[forthSignatureIdx]).toString('hex').should.be.equal(forthSigner);
164
- });
165
- });
166
- });
167
- });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4b0VuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWIvdXR4b0VuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixrQkFBZ0I7QUFDaEIsNERBQTBEO0FBRzFELHFFQUE2QztBQUU3QyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUFpQjtZQUMzQiwrQ0FBK0M7WUFDL0MsK0NBQStDO1lBQy9DLCtDQUErQztTQUNoRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBDLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7WUFDM0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRSxDQUFDO2dCQUNYLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixJQUFJLEVBQUUsbURBQW1EO2dCQUN6RCxTQUFTLEVBQUUsR0FBRztnQkFDZCxTQUFTLEVBQUU7b0JBQ1QsK0NBQStDO29CQUMvQywrQ0FBK0M7b0JBQy9DLCtDQUErQztpQkFDaEQ7Z0JBQ0QsU0FBUyxFQUFFLENBQUM7YUFDYixDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHdCQUFXLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFB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LENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUV0RyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLGVBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUV2RyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLGVBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgdXR4b1RvSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0eG9FbmdpbmUnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IEJ1ZmZlciBhcyBCdWZmZXJBdmF4IH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5kZXNjcmliZSgnQXZheFAgVVRYTyBlbmdpbmUnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdzaG91bGQgZmFpbCcsICgpID0+IHtcbiAgICBjb25zdCBzZW5kZXI6IEJ1ZmZlckF2YXhbXSA9IFtcbiAgICAgICdQLWZ1amkxMDNjbW50c3NwNnFudWNlamFoZGR5NDJ3Y3k0cXR5MHVqNDI4MjInLFxuICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAnUC1mdWppMXl6cGZzZGFsaGZ3a3EyY2Vld2dzOXd2N2swdWZ0NDB5ZHB1ajU5JyxcbiAgICBdLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IGlucHV0IGZvciB1dHhvcyBvZiB3cm9uZyB0eXBlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXR4b3MgPSBbMSwgMiwgMywgNF0ubWFwKChuKSA9PiAoe1xuICAgICAgICBvdXRwdXRJRDogbixcbiAgICAgICAgYW1vdW50OiAnNTA5OTk5OTc1JyxcbiAgICAgICAgdHhpZDogJ0NFYkZhM2hDRGZNRnU4QVNaUDlyVDFzM1gyWDh3cW9QQU4yNThra1N0azlKWDN3c0gnLFxuICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgYWRkcmVzc2VzOiBbXG4gICAgICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAgICAgJ1AtZnVqaTF5enBmc2RhbGhmd2txMmNlZXdnczl3djdrMHVmdDQweWRwdWo1OScsXG4gICAgICAgICAgJ1AtZnVqaTEwM2NtbnRzc3A2cW51Y2VqYWhkZHk0MndjeTRxdHkwdWo0MjgyMicsXG4gICAgICAgIF0sXG4gICAgICAgIHRocmVzaG9sZDogMixcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB1dHhvVG9JbnB1dCh1dHhvcywgc2VuZGVyKTtcbiAgICAgIGlucHV0cy5zaG91bGQuYmUuZW1wdHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIHdyb25nIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dHhvcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICAgIGFtb3VudDogJzUwOTk5OTk3NScsXG4gICAgICAgICAgdHhpZDogJ0NFYkZhM2hDRGZNRnU4QVNaUDlyVDFzM1gyWDh3cW9QQU4yNThra1N0azlKWDN3c0gnLFxuICAgICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICAgIGFkZHJlc3NlczogW1xuICAgICAgICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAgICAgICAnUC1mdWppMXl6cGZzZGFsaGZ3a3EyY2Vld2dzOXd2N2swdWZ0NDB5ZHB1ajU5JyxcbiAgICAgICAgICAgICdQLWZ1amkxM3B5Yzg5dDR4NTQ4M2ZnZGZnZzlsY25weHo3Z2dyMDl2bjZtNmMnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGhyZXNob2xkOiAyLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHV0eG9Ub0lucHV0KHV0eG9zLCBzZW5kZXIpLFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdBZGRyZXNzZXMgYXJlIGluY29uc2lzdGVudDogQ0ViRmEzaENEZk1GdThBU1pQOXJUMXMzWDJYOHdxb1BBTjI1OGtrU3RrOUpYM3dzSCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCB3cm9uZyB0aHJlc2hvbGQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dHhvcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICAgIGFtb3VudDogJzUwOTk5OTk3NScsXG4gICAgICAgICAgdHhpZDogJ0NFYkZhM2hDRGZNRnU4QVNaUDlyVDFzM1gyWDh3cW9QQU4yNThra1N0azlKWDN3c0gnLFxuICAgICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICAgIGFkZHJlc3NlczogW1xuICAgICAgICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAgICAgICAnUC1mdWppMXl6cGZzZGFsaGZ3a3EyY2Vld2dzOXd2N2swdWZ0NDB5ZHB1ajU5JyxcbiAgICAgICAgICAgICdQLWZ1amkxMDNjbW50c3NwNnFudWNlamFoZGR5NDJ3Y3k0cXR5MHVqNDI4MjInLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGhyZXNob2xkOiAzLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHV0eG9Ub0lucHV0KHV0eG9zLCBzZW5kZXIpLFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdUaHJlc2hvbGQgaXMgaW5jb25zaXN0ZW50J1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJzIgb2YgMyBzaWduZXJzJywgKCkgPT4ge1xuICAgIGNvbnN0IHV0eG9zOiBEZWNvZGVkVXR4b09ialtdID0gW1xuICAgICAge1xuICAgICAgICBvdXRwdXRJRDogNyxcbiAgICAgICAgYW1vdW50OiAnNTA5OTk5OTc1JyxcbiAgICAgICAgdHhpZDogJ0NFYkZhM2hDRGZNRnU4QVNaUDlyVDFzM1gyWDh3cW9QQU4yNThra1N0azlKWDN3c0gnLFxuICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgYWRkcmVzc2VzOiBbXG4gICAgICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAgICAgJ1AtZnVqaTF5enBmc2RhbGhmd2txMmNlZXdnczl3djdrMHVmdDQweWRwdWo1OScsXG4gICAgICAgICAgJ1AtZnVqaTEwM2NtbnRzc3A2cW51Y2VqYWhkZHk0MndjeTRxdHkwdWo0MjgyMicsXG4gICAgICAgIF0sXG4gICAgICAgIHRocmVzaG9sZDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICBhbW91bnQ6ICcyNjkzMjgzMDI3MycsXG4gICAgICAgIHR4aWQ6ICcyVnlXTlI0cThwN1puS2Zhb3QzN1NiTUJDV0hiRWJxRWNhN0FmMXRpUlRBcmtKTWRYdCcsXG4gICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICBhZGRyZXNzZXM6IFtcbiAgICAgICAgICAnUC1mdWppMXl6cGZzZGFsaGZ3a3EyY2Vld2dzOXd2N2swdWZ0NDB5ZHB1ajU5JyxcbiAgICAgICAgICAnUC1mdWppMTAzY21udHNzcDZxbnVjZWphaGRkeTQyd2N5NHF0eTB1ajQyODIyJyxcbiAgICAgICAgICAnUC1mdWppMWhkazdudHcwaHVocW1saGxoZW1lOXQ3c2NzeTlsaGZodzN5d3k0JyxcbiAgICAgICAgXSxcbiAgICAgICAgdGhyZXNob2xkOiAyLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IHNlbmRlcjogQnVmZmVyQXZheFtdID0gW1xuICAgICAgJ1AtZnVqaTEwM2NtbnRzc3A2cW51Y2VqYWhkZHk0MndjeTRxdHkwdWo0MjgyMicsXG4gICAgICAnUC1mdWppMWhkazdudHcwaHVocW1saGxoZW1lOXQ3c2NzeTlsaGZodzN5d3k0JyxcbiAgICAgICdQLWZ1amkxeXpwZnNkYWxoZndrcTJjZWV3Z3M5d3Y3azB1ZnQ0MHlkcHVqNTknLFxuICAgIF0ubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuXG4gICAgY29uc3QgZmlyc3RTaWduZXIgPSBzZW5kZXJbMF0udG9TdHJpbmcoJ2hleCcpO1xuICAgIC8vIHNlY29uZCBzaWduZXIgaXMgWmVyb3MgY3JlZGVudGlhbC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBjcmVkZW50aWFsIDIgb2YgMycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB1dHhvVG9JbnB1dCh1dHhvcywgc2VuZGVyKTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCBleHBlY3RlZFNpZ25hdHVyZSA9IGlucHV0LnNpZ25hdHVyZXMubWFwKChzaWduYXR1cmUpID0+XG4gICAgICAgICAgc2lnbmF0dXJlLnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpLnN1YnN0cmluZyg5MClcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0ZWRTaWduYXR1cmUuc2hvdWxkLmNvbnRhaW5FcWwoZmlyc3RTaWduZXIpO1xuICAgICAgICBjb25zdCBmaXN0U2lnbmF0dXJlSWR4ID0gaW5wdXQuc2lnbmF0dXJlc0lkeFtleHBlY3RlZFNpZ25hdHVyZS5pbmRleE9mKGZpcnN0U2lnbmVyKV07XG4gICAgICAgIHV0aWxzLnBhcnNlQWRkcmVzcyh1dHhvc1tpXS5hZGRyZXNzZXNbZmlzdFNpZ25hdHVyZUlkeF0pLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuYmUuZXF1YWwoZmlyc3RTaWduZXIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCc0IG9mIDQgc2lnbmVycycsICgpID0+IHtcbiAgICBjb25zdCB1dHhvczogRGVjb2RlZFV0eG9PYmpbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgb3V0cHV0SUQ6IDcsXG4gICAgICAgIGFtb3VudDogJzUwOTk5OTk3NScsXG4gICAgICAgIHR4aWQ6ICdDRWJGYTNoQ0RmTUZ1OEFTWlA5clQxczNYMlg4d3FvUEFOMjU4a2tTdGs5Slgzd3NIJyxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIGFkZHJlc3NlczogW1xuICAgICAgICAgICdQLWZ1amkxaGRrN250dzBodWhxbWxobGhlbWU5dDdzY3N5OWxoZmh3M3l3eTQnLFxuICAgICAgICAgICdQLWZ1amkxeXpwZnNkYWxoZndrcTJjZWV3Z3M5d3Y3azB1ZnQ0MHlkcHVqNTknLFxuICAgICAgICAgICdQLWZ1amkxM3B5Yzg5dDR4NTQ4M2ZnZGZnZzlsY25weHo3Z2dyMDl2bjZtNmMnLFxuICAgICAgICAgICdQLWZ1amkxMDNjbW50c3NwNnFudWNlamFoZGR5NDJ3Y3k0cXR5MHVqNDI4MjInLFxuICAgICAgICBdLFxuICAgICAgICB0aHJlc2hvbGQ6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdXRwdXRJRDogNyxcbiAgICAgICAgYW1vdW50OiAnMjY5MzI4MzAyNzMnLFxuICAgICAgICB0eGlkOiAnMlZ5V05SNHE4cDdabktmYW90MzdTYk1CQ1dIYkVicUVjYTdBZjF0aVJUQXJrSk1kWHQnLFxuICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgYWRkcmVzc2VzOiBbXG4gICAgICAgICAgJ1AtZnVqaTF5enBmc2RhbGhmd2txMmNlZXdnczl3djdrMHVmdDQweWRwdWo1OScsXG4gICAgICAgICAgJ1AtZnVqaTEzcHljODl0NHg1NDgzZmdkZmdnOWxjbnB4ejdnZ3IwOXZuNm02YycsXG4gICAgICAgICAgJ1AtZnVqaTEwM2NtbnRzc3A2cW51Y2VqYWhkZHk0MndjeTRxdHkwdWo0MjgyMicsXG4gICAgICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAgIF0sXG4gICAgICAgIHRocmVzaG9sZDogNCxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBzZW5kZXI6IEJ1ZmZlckF2YXhbXSA9IFtcbiAgICAgICdQLWZ1amkxMDNjbW50c3NwNnFudWNlamFoZGR5NDJ3Y3k0cXR5MHVqNDI4MjInLFxuICAgICAgJ1AtZnVqaTFoZGs3bnR3MGh1aHFtbGhsaGVtZTl0N3Njc3k5bGhmaHczeXd5NCcsXG4gICAgICAnUC1mdWppMXl6cGZzZGFsaGZ3a3EyY2Vld2dzOXd2N2swdWZ0NDB5ZHB1ajU5JyxcbiAgICAgICdQLWZ1amkxM3B5Yzg5dDR4NTQ4M2ZnZGZnZzlsY25weHo3Z2dyMDl2bjZtNmMnLFxuICAgIF0ubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuXG4gICAgY29uc3QgZmlyc3RTaWduZXIgPSBzZW5kZXJbMF0udG9TdHJpbmcoJ2hleCcpO1xuICAgIC8vIHNlY29uZCBzaWduZXIgaXMgWmVyb3MgY3JlZGVudGlhbC5cbiAgICBjb25zdCB0aGlyZFNpZ25lciA9IHNlbmRlclsyXS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgZm9ydGhTaWduZXIgPSBzZW5kZXJbM10udG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY3JlZGVudGlhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB1dHhvVG9JbnB1dCh1dHhvcywgc2VuZGVyLCA0KTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCBleHBlY3RlZFNpZ25hdHVyZSA9IGlucHV0LnNpZ25hdHVyZXMubWFwKChzaWduYXR1cmUpID0+XG4gICAgICAgICAgc2lnbmF0dXJlLnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpLnN1YnN0cmluZyg5MClcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0ZWRTaWduYXR1cmUuc2hvdWxkLmNvbnRhaW5FcWwoZmlyc3RTaWduZXIpO1xuICAgICAgICBjb25zdCBmaXN0U2lnbmF0dXJlSWR4ID0gaW5wdXQuc2lnbmF0dXJlc0lkeFtleHBlY3RlZFNpZ25hdHVyZS5pbmRleE9mKGZpcnN0U2lnbmVyKV07XG4gICAgICAgIHV0aWxzLnBhcnNlQWRkcmVzcyh1dHhvc1tpXS5hZGRyZXNzZXNbZmlzdFNpZ25hdHVyZUlkeF0pLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuYmUuZXF1YWwoZmlyc3RTaWduZXIpO1xuXG4gICAgICAgIGV4cGVjdGVkU2lnbmF0dXJlLnNob3VsZC5jb250YWluRXFsKHRoaXJkU2lnbmVyKTtcbiAgICAgICAgY29uc3QgdGhpcmRTaWduYXR1cmVJZHggPSBpbnB1dC5zaWduYXR1cmVzSWR4W2V4cGVjdGVkU2lnbmF0dXJlLmluZGV4T2YodGhpcmRTaWduZXIpXTtcbiAgICAgICAgdXRpbHMucGFyc2VBZGRyZXNzKHV0eG9zW2ldLmFkZHJlc3Nlc1t0aGlyZFNpZ25hdHVyZUlkeF0pLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuYmUuZXF1YWwodGhpcmRTaWduZXIpO1xuXG4gICAgICAgIGV4cGVjdGVkU2lnbmF0dXJlLnNob3VsZC5jb250YWluRXFsKGZvcnRoU2lnbmVyKTtcbiAgICAgICAgY29uc3QgZm9ydGhTaWduYXR1cmVJZHggPSBpbnB1dC5zaWduYXR1cmVzSWR4W2V4cGVjdGVkU2lnbmF0dXJlLmluZGV4T2YoZm9ydGhTaWduZXIpXTtcbiAgICAgICAgdXRpbHMucGFyc2VBZGRyZXNzKHV0eG9zW2ldLmFkZHJlc3Nlc1tmb3J0aFNpZ25hdHVyZUlkeF0pLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuYmUuZXF1YWwoZm9ydGhTaWduZXIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=validateTxBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validateTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/validateTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}