@bitgo-beta/sdk-coin-avaxp 2.0.0

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 (113) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/.mocharc.yml +8 -0
  4. package/CHANGELOG.md +168 -0
  5. package/LICENSE +191 -0
  6. package/README.md +39 -0
  7. package/dist/src/avaxp.d.ts +69 -0
  8. package/dist/src/avaxp.d.ts.map +1 -0
  9. package/dist/src/avaxp.js +248 -0
  10. package/dist/src/iface.d.ts +43 -0
  11. package/dist/src/iface.d.ts.map +1 -0
  12. package/dist/src/iface.js +3 -0
  13. package/dist/src/index.d.ts +5 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +30 -0
  16. package/dist/src/lib/atomicTransactionBuilder.d.ts +33 -0
  17. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/atomicTransactionBuilder.js +122 -0
  19. package/dist/src/lib/delegatorTxBuilder.d.ts +96 -0
  20. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/delegatorTxBuilder.js +287 -0
  22. package/dist/src/lib/errors.d.ts +8 -0
  23. package/dist/src/lib/errors.d.ts.map +1 -0
  24. package/dist/src/lib/errors.js +19 -0
  25. package/dist/src/lib/exportTxBuilder.d.ts +34 -0
  26. package/dist/src/lib/exportTxBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/exportTxBuilder.js +88 -0
  28. package/dist/src/lib/iface.d.ts +58 -0
  29. package/dist/src/lib/iface.d.ts.map +1 -0
  30. package/dist/src/lib/iface.js +18 -0
  31. package/dist/src/lib/importInCTxBuilder.d.ts +48 -0
  32. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/importInCTxBuilder.js +152 -0
  34. package/dist/src/lib/importTxBuilder.d.ts +18 -0
  35. package/dist/src/lib/importTxBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/importTxBuilder.js +67 -0
  37. package/dist/src/lib/index.d.ts +9 -0
  38. package/dist/src/lib/index.d.ts.map +1 -0
  39. package/dist/src/lib/index.js +29 -0
  40. package/dist/src/lib/keyPair.d.ts +59 -0
  41. package/dist/src/lib/keyPair.d.ts.map +1 -0
  42. package/dist/src/lib/keyPair.js +151 -0
  43. package/dist/src/lib/transaction.d.ts +81 -0
  44. package/dist/src/lib/transaction.d.ts.map +1 -0
  45. package/dist/src/lib/transaction.js +277 -0
  46. package/dist/src/lib/transactionBuilder.d.ts +122 -0
  47. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transactionBuilder.js +224 -0
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +42 -0
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilderFactory.js +107 -0
  52. package/dist/src/lib/transferBuilder.d.ts +18 -0
  53. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transferBuilder.js +31 -0
  55. package/dist/src/lib/utils.d.ts +152 -0
  56. package/dist/src/lib/utils.d.ts.map +1 -0
  57. package/dist/src/lib/utils.js +300 -0
  58. package/dist/src/lib/utxoEngine.d.ts +45 -0
  59. package/dist/src/lib/utxoEngine.d.ts.map +1 -0
  60. package/dist/src/lib/utxoEngine.js +89 -0
  61. package/dist/src/lib/validatorTxBuilder.d.ts +37 -0
  62. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/validatorTxBuilder.js +69 -0
  64. package/dist/src/tavaxp.d.ts +9 -0
  65. package/dist/src/tavaxp.d.ts.map +1 -0
  66. package/dist/src/tavaxp.js +14 -0
  67. package/dist/test/resources/avaxp.d.ts +178 -0
  68. package/dist/test/resources/avaxp.d.ts.map +1 -0
  69. package/dist/test/resources/avaxp.js +953 -0
  70. package/dist/test/resources/errors.d.ts +18 -0
  71. package/dist/test/resources/errors.d.ts.map +1 -0
  72. package/dist/test/resources/errors.js +21 -0
  73. package/dist/test/resources/keychains.d.ts +18 -0
  74. package/dist/test/resources/keychains.d.ts.map +1 -0
  75. package/dist/test/resources/keychains.js +30 -0
  76. package/dist/test/resources/tx/importC.d.ts +29 -0
  77. package/dist/test/resources/tx/importC.d.ts.map +1 -0
  78. package/dist/test/resources/tx/importC.js +42 -0
  79. package/dist/test/resources/tx/importP.d.ts +29 -0
  80. package/dist/test/resources/tx/importP.d.ts.map +1 -0
  81. package/dist/test/resources/tx/importP.js +42 -0
  82. package/dist/test/unit/avaxp.d.ts +2 -0
  83. package/dist/test/unit/avaxp.d.ts.map +1 -0
  84. package/dist/test/unit/avaxp.js +553 -0
  85. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +2 -0
  86. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +1 -0
  87. package/dist/test/unit/lib/exportP2CTxBuilder.js +173 -0
  88. package/dist/test/unit/lib/importC2PTxBuilder.d.ts +2 -0
  89. package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +1 -0
  90. package/dist/test/unit/lib/importC2PTxBuilder.js +85 -0
  91. package/dist/test/unit/lib/importP2CTxBuilder.d.ts +2 -0
  92. package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +1 -0
  93. package/dist/test/unit/lib/importP2CTxBuilder.js +125 -0
  94. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  95. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  96. package/dist/test/unit/lib/keyPair.js +172 -0
  97. package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
  98. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
  99. package/dist/test/unit/lib/signFlowTestSuit.js +80 -0
  100. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
  101. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
  102. package/dist/test/unit/lib/transactionBuilderFactory.js +114 -0
  103. package/dist/test/unit/lib/utils.d.ts +2 -0
  104. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  105. package/dist/test/unit/lib/utils.js +69 -0
  106. package/dist/test/unit/lib/utxoEngine.d.ts +2 -0
  107. package/dist/test/unit/lib/utxoEngine.d.ts.map +1 -0
  108. package/dist/test/unit/lib/utxoEngine.js +168 -0
  109. package/dist/test/unit/lib/validateTxBuilder.d.ts +2 -0
  110. package/dist/test/unit/lib/validateTxBuilder.d.ts.map +1 -0
  111. package/dist/test/unit/lib/validateTxBuilder.js +318 -0
  112. package/dist/tsconfig.tsbuildinfo +10238 -0
  113. package/package.json +62 -0
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=exportP2CTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportP2CTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/exportP2CTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,173 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const assert_1 = __importDefault(require("assert"));
26
+ require("should");
27
+ const testData = __importStar(require("../../resources/avaxp"));
28
+ const errorMessage = __importStar(require("../../resources/errors"));
29
+ const lib_1 = require("../../../src/lib");
30
+ const statics_1 = require("@bitgo-beta/statics");
31
+ const signFlowTestSuit_1 = __importDefault(require("./signFlowTestSuit"));
32
+ describe('AvaxP Export P2C Tx Builder', () => {
33
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'));
34
+ describe('validate txBuilder fields', () => {
35
+ const txBuilder = factory.getExportBuilder();
36
+ it('should fail amount low than zero', () => {
37
+ assert_1.default.throws(() => {
38
+ txBuilder.amount('-1');
39
+ }, (e) => e.message === errorMessage.ERROR_AMOUNT);
40
+ });
41
+ it('should fail target chain id length incorrect', () => {
42
+ assert_1.default.throws(() => {
43
+ txBuilder.externalChainId(Buffer.from(testData.INVALID_CHAIN_ID));
44
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_LENGTH);
45
+ });
46
+ it('should fail target chain id not a vaild base58 string', () => {
47
+ assert_1.default.throws(() => {
48
+ txBuilder.externalChainId(testData.INVALID_CHAIN_ID);
49
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_NOT_BASE58);
50
+ });
51
+ it('should fail target chain id cb58 invalid checksum', () => {
52
+ assert_1.default.throws(() => {
53
+ txBuilder.externalChainId(testData.VALID_C_CHAIN_ID.slice(2));
54
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_INVALID_CHECKSUM);
55
+ });
56
+ it('should fail validate Utxos empty string', () => {
57
+ assert_1.default.throws(() => {
58
+ txBuilder.validateUtxos([]);
59
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_EMPTY);
60
+ });
61
+ it('should fail validate Utxos without amount field', () => {
62
+ assert_1.default.throws(() => {
63
+ txBuilder.validateUtxos([{ outputID: '' }]);
64
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_AMOUNT);
65
+ });
66
+ });
67
+ signFlowTestSuit_1.default({
68
+ transactionType: 'Export P2C with changeoutput',
69
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
70
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
71
+ .getExportBuilder()
72
+ .threshold(testData.EXPORT_P_2_C.threshold)
73
+ .locktime(testData.EXPORT_P_2_C.locktime)
74
+ .fromPubKey(testData.EXPORT_P_2_C.pAddresses)
75
+ .amount(testData.EXPORT_P_2_C.amount)
76
+ .externalChainId(testData.EXPORT_P_2_C.targetChainId)
77
+ .memo(testData.EXPORT_P_2_C.memo)
78
+ .utxos(testData.EXPORT_P_2_C.outputs),
79
+ unsignedTxHex: testData.EXPORT_P_2_C.unsignedTxHex,
80
+ halfsigntxHex: testData.EXPORT_P_2_C.halfsigntxHex,
81
+ fullsigntxHex: testData.EXPORT_P_2_C.fullsigntxHex,
82
+ privKey: {
83
+ prv1: testData.EXPORT_P_2_C.privKey.prv1,
84
+ prv2: testData.EXPORT_P_2_C.privKey.prv2,
85
+ },
86
+ });
87
+ signFlowTestSuit_1.default({
88
+ transactionType: 'Export P2C recovery with changeoutput',
89
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
90
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
91
+ .getExportBuilder()
92
+ .threshold(testData.EXPORT_P_2_C.threshold)
93
+ .locktime(testData.EXPORT_P_2_C.locktime)
94
+ .fromPubKey(testData.EXPORT_P_2_C.pAddresses)
95
+ .amount(testData.EXPORT_P_2_C.amount)
96
+ .externalChainId(testData.EXPORT_P_2_C.targetChainId)
97
+ .memo(testData.EXPORT_P_2_C.memo)
98
+ .utxos(testData.EXPORT_P_2_C.outputs)
99
+ .recoverMode(),
100
+ unsignedTxHex: testData.EXPORT_P_2_C.rUnsignedTxHex,
101
+ halfsigntxHex: testData.EXPORT_P_2_C.rHalfsigntxHex,
102
+ fullsigntxHex: testData.EXPORT_P_2_C.rFullsigntxHex,
103
+ privKey: {
104
+ prv1: testData.EXPORT_P_2_C.privKey.prv3,
105
+ prv2: testData.EXPORT_P_2_C.privKey.prv2,
106
+ },
107
+ });
108
+ signFlowTestSuit_1.default({
109
+ transactionType: 'Export P2C without changeoutput',
110
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
111
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
112
+ .getExportBuilder()
113
+ .threshold(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.threshold)
114
+ .locktime(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.locktime)
115
+ .fromPubKey(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.pAddresses)
116
+ .amount(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.amount)
117
+ .externalChainId(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.targetChainId)
118
+ .memo(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.memo)
119
+ .utxos(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.outputs),
120
+ unsignedTxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.unsignedTxHex,
121
+ halfsigntxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.halfsigntxHex,
122
+ fullsigntxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.fullsigntxHex,
123
+ privKey: {
124
+ prv1: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.privKey.prv1,
125
+ prv2: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.privKey.prv2,
126
+ },
127
+ });
128
+ signFlowTestSuit_1.default({
129
+ transactionType: 'Export P2C recovery without changeoutput',
130
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
131
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
132
+ .getExportBuilder()
133
+ .threshold(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.threshold)
134
+ .locktime(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.locktime)
135
+ .fromPubKey(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.pAddresses)
136
+ .amount(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.amount)
137
+ .externalChainId(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.targetChainId)
138
+ .memo(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.memo)
139
+ .utxos(testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.outputs)
140
+ .recoverMode(),
141
+ unsignedTxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.rUnsignedTxHex,
142
+ halfsigntxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.rHalfsigntxHex,
143
+ fullsigntxHex: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.rFullsigntxHex,
144
+ privKey: {
145
+ prv1: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.privKey.prv3,
146
+ prv2: testData.EXPORT_P_2_C_WITHOUT_CHANGEOUTPUT.privKey.prv2,
147
+ },
148
+ });
149
+ describe('Key cannot sign the transaction ', () => {
150
+ const data = testData.EXPORT_P_2_C;
151
+ it('Should full sign a export tx from unsigned raw tx', () => {
152
+ const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(data.unsignedTxHex);
153
+ txBuilder.sign({ key: data.privKey.prv2 });
154
+ txBuilder
155
+ .build()
156
+ .then((ok) => assert_1.default.fail('it can sign'))
157
+ .catch((err) => {
158
+ err.message.should.be.equal(errorMessage.ERROR_KEY_CANNOT_SIGN);
159
+ });
160
+ });
161
+ it('Should 2 full sign a export tx from unsigned raw tx', () => {
162
+ const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(data.rUnsignedTxHex);
163
+ txBuilder.sign({ key: data.privKey.prv1 });
164
+ txBuilder
165
+ .build()
166
+ .then((ok) => assert_1.default.fail('it can sign'))
167
+ .catch((err) => {
168
+ err.message.should.be.equal(errorMessage.ERROR_KEY_CANNOT_SIGN);
169
+ });
170
+ });
171
+ });
172
+ });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0UDJDVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9leHBvcnRQMkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGtCQUFnQjtBQUNoQixnRUFBa0Q7QUFDbEQscUVBQXVEO0FBQ3ZELDBDQUE2RTtBQUM3RSxpREFBNEM7QUFDNUMsMEVBQThDO0FBRTlDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFbkUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxZQUFZLENBQUMsWUFBWSxDQUMvQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1lBQ3RELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFB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LENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9hdmF4cCc7XG5pbXBvcnQgKiBhcyBlcnJvck1lc3NhZ2UgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaWduRmxvd1Rlc3QgZnJvbSAnLi9zaWduRmxvd1Rlc3RTdWl0JztcblxuZGVzY3JpYmUoJ0F2YXhQIEV4cG9ydCBQMkMgVHggQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpO1xuXG4gIGRlc2NyaWJlKCd2YWxpZGF0ZSB0eEJ1aWxkZXIgZmllbGRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhwb3J0QnVpbGRlcigpO1xuICAgIGl0KCdzaG91bGQgZmFpbCBhbW91bnQgbG93IHRoYW4gemVybycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuYW1vdW50KCctMScpO1xuICAgICAgICB9LFxuICAgICAgICAoZSkgPT4gZS5tZXNzYWdlID09PSBlcnJvck1lc3NhZ2UuRVJST1JfQU1PVU5UXG4gICAgICApO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmFpbCB0YXJnZXQgY2hhaW4gaWQgbGVuZ3RoIGluY29ycmVjdCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXh0ZXJuYWxDaGFpbklkKEJ1ZmZlci5mcm9tKHRlc3REYXRhLklOVkFMSURfQ0hBSU5fSUQpKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGUpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX0NIQUlOX0lEX0xFTkdUSFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0YXJnZXQgY2hhaW4gaWQgbm90IGEgdmFpbGQgYmFzZTU4IHN0cmluZycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXh0ZXJuYWxDaGFpbklkKHRlc3REYXRhLklOVkFMSURfQ0hBSU5fSUQpO1xuICAgICAgICB9LFxuICAgICAgICAoZSkgPT4gZS5tZXNzYWdlID09PSBlcnJvck1lc3NhZ2UuRVJST1JfQ0hBSU5fSURfTk9UX0JBU0U1OFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0YXJnZXQgY2hhaW4gaWQgY2I1OCBpbnZhbGlkIGNoZWNrc3VtJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlcm5hbENoYWluSWQodGVzdERhdGEuVkFMSURfQ19DSEFJTl9JRC5zbGljZSgyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlKSA9PiBlLm1lc3NhZ2UgPT09IGVycm9yTWVzc2FnZS5FUlJPUl9DSEFJTl9JRF9JTlZBTElEX0NIRUNLU1VNXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZhbGlkYXRlIFV0eG9zIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdGVVdHhvcyhbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlKSA9PiBlLm1lc3NhZ2UgPT09IGVycm9yTWVzc2FnZS5FUlJPUl9VVFhPU19FTVBUWVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2YWxpZGF0ZSBVdHhvcyB3aXRob3V0IGFtb3VudCBmaWVsZCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdGVVdHhvcyhbeyBvdXRwdXRJRDogJycgfSBhcyBhbnkgYXMgRGVjb2RlZFV0eG9PYmpdKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGUpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX1VUWE9TX0FNT1VOVFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2lnbkZsb3dUZXN0KHtcbiAgICB0cmFuc2FjdGlvblR5cGU6ICdFeHBvcnQgUDJDIHdpdGggY2hhbmdlb3V0cHV0JyxcbiAgICBuZXdUeEZhY3Rvcnk6ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLFxuICAgIG5ld1R4QnVpbGRlcjogKCkgPT5cbiAgICAgIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRFeHBvcnRCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCh0ZXN0RGF0YS5FWFBPUlRfUF8yX0MudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuRVhQT1JUX1BfMl9DLmxvY2t0aW1lKVxuICAgICAgICAuZnJvbVB1YktleSh0ZXN0RGF0YS5FWFBPUlRfUF8yX0MucEFkZHJlc3NlcylcbiAgICAgICAgLmFtb3VudCh0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuYW1vdW50KVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKHRlc3REYXRhLkVYUE9SVF9QXzJfQy50YXJnZXRDaGFpbklkKVxuICAgICAgICAubWVtbyh0ZXN0RGF0YS5FWFBPUlRfUF8yX0MubWVtbylcbiAgICAgICAgLnV0eG9zKHRlc3REYXRhLkVYUE9SVF9QXzJfQy5vdXRwdXRzKSxcbiAgICB1bnNpZ25lZFR4SGV4OiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MudW5zaWduZWRUeEhleCxcbiAgICBoYWxmc2lnbnR4SGV4OiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuaGFsZnNpZ250eEhleCxcbiAgICBmdWxsc2lnbnR4SGV4OiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuZnVsbHNpZ250eEhleCxcbiAgICBwcml2S2V5OiB7XG4gICAgICBwcnYxOiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MucHJpdktleS5wcnYxLFxuICAgICAgcHJ2MjogdGVzdERhdGEuRVhQT1JUX1BfMl9DLnByaXZLZXkucHJ2MixcbiAgICB9LFxuICB9KTtcblxuICBzaWduRmxvd1Rlc3Qoe1xuICAgIHRyYW5zYWN0aW9uVHlwZTogJ0V4cG9ydCBQMkMgcmVjb3Zlcnkgd2l0aCBjaGFuZ2VvdXRwdXQnLFxuICAgIG5ld1R4RmFjdG9yeTogKCkgPT4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSksXG4gICAgbmV3VHhCdWlsZGVyOiAoKSA9PlxuICAgICAgbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSlcbiAgICAgICAgLmdldEV4cG9ydEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKHRlc3REYXRhLkVYUE9SVF9QXzJfQy50aHJlc2hvbGQpXG4gICAgICAgIC5sb2NrdGltZSh0ZXN0RGF0YS5FWFBPUlRfUF8yX0MubG9ja3RpbWUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLkVYUE9SVF9QXzJfQy5wQWRkcmVzc2VzKVxuICAgICAgICAuYW1vdW50KHRlc3REYXRhLkVYUE9SVF9QXzJfQy5hbW91bnQpXG4gICAgICAgIC5leHRlcm5hbENoYWluSWQodGVzdERhdGEuRVhQT1JUX1BfMl9DLnRhcmdldENoYWluSWQpXG4gICAgICAgIC5tZW1vKHRlc3REYXRhLkVYUE9SVF9QXzJfQy5tZW1vKVxuICAgICAgICAudXR4b3ModGVzdERhdGEuRVhQT1JUX1BfMl9DLm91dHB1dHMpXG4gICAgICAgIC5yZWNvdmVyTW9kZSgpLFxuICAgIHVuc2lnbmVkVHhIZXg6IHRlc3REYXRhLkVYUE9SVF9QXzJfQy5yVW5zaWduZWRUeEhleCxcbiAgICBoYWxmc2lnbnR4SGV4OiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MuckhhbGZzaWdudHhIZXgsXG4gICAgZnVsbHNpZ250eEhleDogdGVzdERhdGEuRVhQT1JUX1BfMl9DLnJGdWxsc2lnbnR4SGV4LFxuICAgIHByaXZLZXk6IHtcbiAgICAgIHBydjE6IHRlc3REYXRhLkVYUE9SVF9QXzJfQy5wcml2S2V5LnBydjMsXG4gICAgICBwcnYyOiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0MucHJpdktleS5wcnYyLFxuICAgIH0sXG4gIH0pO1xuXG4gIHNpZ25GbG93VGVzdCh7XG4gICAgdHJhbnNhY3Rpb25UeXBlOiAnRXhwb3J0IFAyQyB3aXRob3V0IGNoYW5nZW91dHB1dCcsXG4gICAgbmV3VHhGYWN0b3J5OiAoKSA9PiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKSxcbiAgICBuZXdUeEJ1aWxkZXI6ICgpID0+XG4gICAgICBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZ2V0RXhwb3J0QnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQodGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKHRlc3REYXRhLkVYUE9SVF9QXzJfQ19XSVRIT1VUX0NIQU5HRU9VVFBVVC5sb2NrdGltZSlcbiAgICAgICAgLmZyb21QdWJLZXkodGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnBBZGRyZXNzZXMpXG4gICAgICAgIC5hbW91bnQodGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULmFtb3VudClcbiAgICAgICAgLmV4dGVybmFsQ2hhaW5JZCh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQudGFyZ2V0Q2hhaW5JZClcbiAgICAgICAgLm1lbW8odGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULm1lbW8pXG4gICAgICAgIC51dHhvcyh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQub3V0cHV0cyksXG4gICAgdW5zaWduZWRUeEhleDogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnVuc2lnbmVkVHhIZXgsXG4gICAgaGFsZnNpZ250eEhleDogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULmhhbGZzaWdudHhIZXgsXG4gICAgZnVsbHNpZ250eEhleDogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULmZ1bGxzaWdudHhIZXgsXG4gICAgcHJpdktleToge1xuICAgICAgcHJ2MTogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnByaXZLZXkucHJ2MSxcbiAgICAgIHBydjI6IHRlc3REYXRhLkVYUE9SVF9QXzJfQ19XSVRIT1VUX0NIQU5HRU9VVFBVVC5wcml2S2V5LnBydjIsXG4gICAgfSxcbiAgfSk7XG5cbiAgc2lnbkZsb3dUZXN0KHtcbiAgICB0cmFuc2FjdGlvblR5cGU6ICdFeHBvcnQgUDJDIHJlY292ZXJ5IHdpdGhvdXQgY2hhbmdlb3V0cHV0JyxcbiAgICBuZXdUeEZhY3Rvcnk6ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLFxuICAgIG5ld1R4QnVpbGRlcjogKCkgPT5cbiAgICAgIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRFeHBvcnRCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULmxvY2t0aW1lKVxuICAgICAgICAuZnJvbVB1YktleSh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQucEFkZHJlc3NlcylcbiAgICAgICAgLmFtb3VudCh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQuYW1vdW50KVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKHRlc3REYXRhLkVYUE9SVF9QXzJfQ19XSVRIT1VUX0NIQU5HRU9VVFBVVC50YXJnZXRDaGFpbklkKVxuICAgICAgICAubWVtbyh0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQubWVtbylcbiAgICAgICAgLnV0eG9zKHRlc3REYXRhLkVYUE9SVF9QXzJfQ19XSVRIT1VUX0NIQU5HRU9VVFBVVC5vdXRwdXRzKVxuICAgICAgICAucmVjb3Zlck1vZGUoKSxcbiAgICB1bnNpZ25lZFR4SGV4OiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQuclVuc2lnbmVkVHhIZXgsXG4gICAgaGFsZnNpZ250eEhleDogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnJIYWxmc2lnbnR4SGV4LFxuICAgIGZ1bGxzaWdudHhIZXg6IHRlc3REYXRhLkVYUE9SVF9QXzJfQ19XSVRIT1VUX0NIQU5HRU9VVFBVVC5yRnVsbHNpZ250eEhleCxcbiAgICBwcml2S2V5OiB7XG4gICAgICBwcnYxOiB0ZXN0RGF0YS5FWFBPUlRfUF8yX0NfV0lUSE9VVF9DSEFOR0VPVVRQVVQucHJpdktleS5wcnYzLFxuICAgICAgcHJ2MjogdGVzdERhdGEuRVhQT1JUX1BfMl9DX1dJVEhPVVRfQ0hBTkdFT1VUUFVULnByaXZLZXkucHJ2MixcbiAgICB9LFxuICB9KTtcblxuICBkZXNjcmliZSgnS2V5IGNhbm5vdCBzaWduIHRoZSB0cmFuc2FjdGlvbiAnLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHRlc3REYXRhLkVYUE9SVF9QXzJfQztcbiAgICBpdCgnU2hvdWxkIGZ1bGwgc2lnbiBhIGV4cG9ydCB0eCBmcm9tIHVuc2lnbmVkIHJhdyB0eCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20oZGF0YS51bnNpZ25lZFR4SGV4KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkYXRhLnByaXZLZXkucHJ2MiB9KTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAuYnVpbGQoKVxuICAgICAgICAudGhlbigob2spID0+IGFzc2VydC5mYWlsKCdpdCBjYW4gc2lnbicpKVxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5iZS5lcXVhbChlcnJvck1lc3NhZ2UuRVJST1JfS0VZX0NBTk5PVF9TSUdOKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIDIgZnVsbCBzaWduIGEgZXhwb3J0IHR4IGZyb20gdW5zaWduZWQgcmF3IHR4JywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSkuZnJvbShkYXRhLnJVbnNpZ25lZFR4SGV4KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkYXRhLnByaXZLZXkucHJ2MSB9KTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAuYnVpbGQoKVxuICAgICAgICAudGhlbigob2spID0+IGFzc2VydC5mYWlsKCdpdCBjYW4gc2lnbicpKVxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5iZS5lcXVhbChlcnJvck1lc3NhZ2UuRVJST1JfS0VZX0NBTk5PVF9TSUdOKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=importC2PTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importC2PTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/importC2PTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,85 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const assert_1 = __importDefault(require("assert"));
26
+ require("should");
27
+ const errorMessage = __importStar(require("../../resources/errors"));
28
+ const lib_1 = require("../../../src/lib");
29
+ const statics_1 = require("@bitgo-beta/statics");
30
+ const importC_1 = require("../../resources/tx/importC");
31
+ const signFlowTestSuit_1 = __importDefault(require("./signFlowTestSuit"));
32
+ describe('AvaxP Import C2P Tx Builder', () => {
33
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'));
34
+ describe('validate txBuilder fields', () => {
35
+ const txBuilder = factory.getImportInCBuilder();
36
+ it('should fail validate Utxos empty string', () => {
37
+ assert_1.default.throws(() => {
38
+ txBuilder.validateUtxos([]);
39
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_EMPTY);
40
+ });
41
+ it('should fail validate Utxos without amount field', () => {
42
+ assert_1.default.throws(() => {
43
+ txBuilder.validateUtxos([{ outputID: '' }]);
44
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_AMOUNT);
45
+ });
46
+ });
47
+ signFlowTestSuit_1.default({
48
+ transactionType: 'Import C2P',
49
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
50
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
51
+ .getImportInCBuilder()
52
+ .threshold(importC_1.IMPORT_C.threshold)
53
+ .fromPubKey(importC_1.IMPORT_C.pAddresses)
54
+ .utxos(importC_1.IMPORT_C.outputs)
55
+ .to(importC_1.IMPORT_C.to)
56
+ .feeRate(importC_1.IMPORT_C.fee),
57
+ unsignedTxHex: importC_1.IMPORT_C.unsignedTxHex,
58
+ halfsigntxHex: importC_1.IMPORT_C.halfsigntxHex,
59
+ fullsigntxHex: importC_1.IMPORT_C.fullsigntxHex,
60
+ privKey: {
61
+ prv1: importC_1.IMPORT_C.privKey.prv1,
62
+ prv2: importC_1.IMPORT_C.privKey.prv2,
63
+ },
64
+ });
65
+ signFlowTestSuit_1.default({
66
+ transactionType: 'Import C2P recovery',
67
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
68
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
69
+ .getImportInCBuilder()
70
+ .threshold(importC_1.IMPORT_C.threshold)
71
+ .fromPubKey(importC_1.IMPORT_C.pAddresses)
72
+ .utxos(importC_1.IMPORT_C.outputs)
73
+ .to(importC_1.IMPORT_C.to)
74
+ .feeRate(importC_1.IMPORT_C.fee)
75
+ .recoverMode(),
76
+ unsignedTxHex: importC_1.IMPORT_C.rUnsignedTxHex,
77
+ halfsigntxHex: importC_1.IMPORT_C.rHalfsigntxHex,
78
+ fullsigntxHex: importC_1.IMPORT_C.rFullsigntxHex,
79
+ privKey: {
80
+ prv1: importC_1.IMPORT_C.privKey.prv3,
81
+ prv2: importC_1.IMPORT_C.privKey.prv2,
82
+ },
83
+ });
84
+ });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0QzJQVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9pbXBvcnRDMlBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGtCQUFnQjtBQUNoQixxRUFBdUQ7QUFDdkQsMENBQTZFO0FBQzdFLGlEQUE0QztBQUM1Qyx3REFBc0Q7QUFDdEQsMEVBQThDO0FBRTlDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUVoRCxFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxZQUFZLENBQUMsaUJBQWlCLENBQ3BELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7WUFDekQsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQTJCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxZQUFZLENBQUMsa0JBQWtCLENBQ3JELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsMEJBQVksQ0FBQztRQUNYLGVBQWUsRUFBRSxZQUFZO1FBQzdCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUNqQixJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDL0MsbUJBQW1CLEVBQUU7YUFDckIsU0FBUyxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDO2FBQzdCLFVBQVUsQ0FBQyxrQkFBUSxDQUFDLFVBQVUsQ0FBQzthQUMvQixLQUFLLENBQUMsa0JBQVEsQ0FBQyxPQUFPLENBQUM7YUFDdkIsRUFBRSxDQUFDLGtCQUFRLENBQUMsRUFBRSxDQUFDO2FBQ2YsT0FBTyxDQUFDLGtCQUFRLENBQUMsR0FBRyxDQUFDO1FBQzFCLGFBQWEsRUFBRSxrQkFBUSxDQUFDLGFBQWE7UUFDckMsYUFBYSxFQUFFLGtCQUFRLENBQUMsYUFBYTtRQUNyQyxhQUFhLEVBQUUsa0JBQVEsQ0FBQyxhQUFhO1FBQ3JDLE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzNCLElBQUksRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1NBQzVCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsMEJBQVksQ0FBQztRQUNYLGVBQWUsRUFBRSxxQkFBcUI7UUFDdEMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ2pCLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvQyxtQkFBbUIsRUFBRTthQUNyQixTQUFTLENBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUM7YUFDN0IsVUFBVSxDQUFDLGtCQUFRLENBQUMsVUFBVSxDQUFDO2FBQy9CLEtBQUssQ0FBQyxrQkFBUSxDQUFDLE9BQU8sQ0FBQzthQUN2QixFQUFFLENBQUMsa0JBQVEsQ0FBQyxFQUFFLENBQUM7YUFDZixPQUFPLENBQUMsa0JBQVEsQ0FBQyxHQUFHLENBQUM7YUFDckIsV0FBVyxFQUFFO1FBQ2xCLGFBQWEsRUFBRSxrQkFBUSxDQUFDLGNBQWM7UUFDdEMsYUFBYSxFQUFFLGtCQUFRLENBQUMsY0FBYztRQUN0QyxhQUFhLEVBQUUsa0JBQVEsQ0FBQyxjQUFjO1FBQ3RDLE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzNCLElBQUksRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1NBQzVCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBlcnJvck1lc3NhZ2UgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IElNUE9SVF9DIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3R4L2ltcG9ydEMnO1xuaW1wb3J0IHNpZ25GbG93VGVzdCBmcm9tICcuL3NpZ25GbG93VGVzdFN1aXQnO1xuXG5kZXNjcmliZSgnQXZheFAgSW1wb3J0IEMyUCBUeCBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSk7XG4gIGRlc2NyaWJlKCd2YWxpZGF0ZSB0eEJ1aWxkZXIgZmllbGRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0SW1wb3J0SW5DQnVpbGRlcigpO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZhbGlkYXRlIFV0eG9zIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdGVVdHhvcyhbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlKSA9PiBlLm1lc3NhZ2UgPT09IGVycm9yTWVzc2FnZS5FUlJPUl9VVFhPU19FTVBUWVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2YWxpZGF0ZSBVdHhvcyB3aXRob3V0IGFtb3VudCBmaWVsZCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdGVVdHhvcyhbeyBvdXRwdXRJRDogJycgfSBhcyBhbnkgYXMgRGVjb2RlZFV0eG9PYmpdKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGUpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX1VUWE9TX0FNT1VOVFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2lnbkZsb3dUZXN0KHtcbiAgICB0cmFuc2FjdGlvblR5cGU6ICdJbXBvcnQgQzJQJyxcbiAgICBuZXdUeEZhY3Rvcnk6ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLFxuICAgIG5ld1R4QnVpbGRlcjogKCkgPT5cbiAgICAgIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRJbXBvcnRJbkNCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZChJTVBPUlRfQy50aHJlc2hvbGQpXG4gICAgICAgIC5mcm9tUHViS2V5KElNUE9SVF9DLnBBZGRyZXNzZXMpXG4gICAgICAgIC51dHhvcyhJTVBPUlRfQy5vdXRwdXRzKVxuICAgICAgICAudG8oSU1QT1JUX0MudG8pXG4gICAgICAgIC5mZWVSYXRlKElNUE9SVF9DLmZlZSksXG4gICAgdW5zaWduZWRUeEhleDogSU1QT1JUX0MudW5zaWduZWRUeEhleCxcbiAgICBoYWxmc2lnbnR4SGV4OiBJTVBPUlRfQy5oYWxmc2lnbnR4SGV4LFxuICAgIGZ1bGxzaWdudHhIZXg6IElNUE9SVF9DLmZ1bGxzaWdudHhIZXgsXG4gICAgcHJpdktleToge1xuICAgICAgcHJ2MTogSU1QT1JUX0MucHJpdktleS5wcnYxLFxuICAgICAgcHJ2MjogSU1QT1JUX0MucHJpdktleS5wcnYyLFxuICAgIH0sXG4gIH0pO1xuXG4gIHNpZ25GbG93VGVzdCh7XG4gICAgdHJhbnNhY3Rpb25UeXBlOiAnSW1wb3J0IEMyUCByZWNvdmVyeScsXG4gICAgbmV3VHhGYWN0b3J5OiAoKSA9PiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKSxcbiAgICBuZXdUeEJ1aWxkZXI6ICgpID0+XG4gICAgICBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKVxuICAgICAgICAuZ2V0SW1wb3J0SW5DQnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQoSU1QT1JUX0MudGhyZXNob2xkKVxuICAgICAgICAuZnJvbVB1YktleShJTVBPUlRfQy5wQWRkcmVzc2VzKVxuICAgICAgICAudXR4b3MoSU1QT1JUX0Mub3V0cHV0cylcbiAgICAgICAgLnRvKElNUE9SVF9DLnRvKVxuICAgICAgICAuZmVlUmF0ZShJTVBPUlRfQy5mZWUpXG4gICAgICAgIC5yZWNvdmVyTW9kZSgpLFxuICAgIHVuc2lnbmVkVHhIZXg6IElNUE9SVF9DLnJVbnNpZ25lZFR4SGV4LFxuICAgIGhhbGZzaWdudHhIZXg6IElNUE9SVF9DLnJIYWxmc2lnbnR4SGV4LFxuICAgIGZ1bGxzaWdudHhIZXg6IElNUE9SVF9DLnJGdWxsc2lnbnR4SGV4LFxuICAgIHByaXZLZXk6IHtcbiAgICAgIHBydjE6IElNUE9SVF9DLnByaXZLZXkucHJ2MyxcbiAgICAgIHBydjI6IElNUE9SVF9DLnByaXZLZXkucHJ2MixcbiAgICB9LFxuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=importP2CTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importP2CTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/importP2CTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,125 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const assert_1 = __importDefault(require("assert"));
26
+ require("should");
27
+ const testData = __importStar(require("../../resources/avaxp"));
28
+ const errorMessage = __importStar(require("../../resources/errors"));
29
+ const lib_1 = require("../../../src/lib");
30
+ const statics_1 = require("@bitgo-beta/statics");
31
+ const signFlowTestSuit_1 = __importDefault(require("./signFlowTestSuit"));
32
+ const importP_1 = require("../../resources/tx/importP");
33
+ describe('AvaxP Import P2C Tx Builder', () => {
34
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'));
35
+ describe('validate txBuilder fields', () => {
36
+ const txBuilder = factory.getImportBuilder();
37
+ it('should fail target chain id length incorrect', () => {
38
+ assert_1.default.throws(() => {
39
+ txBuilder.externalChainId(Buffer.from(testData.INVALID_CHAIN_ID));
40
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_LENGTH);
41
+ });
42
+ it('should fail target chain id not a vaild base58 string', () => {
43
+ assert_1.default.throws(() => {
44
+ txBuilder.externalChainId(testData.INVALID_CHAIN_ID);
45
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_NOT_BASE58);
46
+ });
47
+ it('should fail target chain id cb58 invalid checksum', () => {
48
+ assert_1.default.throws(() => {
49
+ txBuilder.externalChainId(testData.VALID_C_CHAIN_ID.slice(2));
50
+ }, (e) => e.message === errorMessage.ERROR_CHAIN_ID_INVALID_CHECKSUM);
51
+ });
52
+ it('should fail validate Utxos empty string', () => {
53
+ assert_1.default.throws(() => {
54
+ txBuilder.validateUtxos([]);
55
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_EMPTY);
56
+ });
57
+ it('should fail validate Utxos without amount field', () => {
58
+ assert_1.default.throws(() => {
59
+ txBuilder.validateUtxos([{ outputID: '' }]);
60
+ }, (e) => e.message === errorMessage.ERROR_UTXOS_AMOUNT);
61
+ });
62
+ });
63
+ signFlowTestSuit_1.default({
64
+ transactionType: 'Import P2C',
65
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
66
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
67
+ .getImportBuilder()
68
+ .threshold(importP_1.IMPORT_P.threshold)
69
+ .locktime(importP_1.IMPORT_P.locktime)
70
+ .fromPubKey(importP_1.IMPORT_P.pAddresses)
71
+ .externalChainId(importP_1.IMPORT_P.targetChainId)
72
+ .memo(importP_1.IMPORT_P.memo)
73
+ .utxos(importP_1.IMPORT_P.outputs),
74
+ unsignedTxHex: importP_1.IMPORT_P.unsignedTxHex,
75
+ halfsigntxHex: importP_1.IMPORT_P.halfsigntxHex,
76
+ fullsigntxHex: importP_1.IMPORT_P.fullsigntxHex,
77
+ privKey: {
78
+ prv1: importP_1.IMPORT_P.privKey.prv1,
79
+ prv2: importP_1.IMPORT_P.privKey.prv2,
80
+ },
81
+ });
82
+ signFlowTestSuit_1.default({
83
+ transactionType: 'Import P2C recovery',
84
+ newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')),
85
+ newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp'))
86
+ .getImportBuilder()
87
+ .threshold(importP_1.IMPORT_P.threshold)
88
+ .locktime(importP_1.IMPORT_P.locktime)
89
+ .fromPubKey(importP_1.IMPORT_P.pAddresses)
90
+ .externalChainId(importP_1.IMPORT_P.targetChainId)
91
+ .memo(importP_1.IMPORT_P.memo)
92
+ .utxos(importP_1.IMPORT_P.outputs)
93
+ .recoverMode(),
94
+ unsignedTxHex: importP_1.IMPORT_P.rUnsignedTxHex,
95
+ halfsigntxHex: importP_1.IMPORT_P.rHalfsigntxHex,
96
+ fullsigntxHex: importP_1.IMPORT_P.rFullsigntxHex,
97
+ privKey: {
98
+ prv1: importP_1.IMPORT_P.privKey.prv3,
99
+ prv2: importP_1.IMPORT_P.privKey.prv2,
100
+ },
101
+ });
102
+ describe('Key cannot sign the transaction ', () => {
103
+ it('Should full sign a import tx from unsigned raw tx', () => {
104
+ const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(importP_1.IMPORT_P.unsignedTxHex);
105
+ txBuilder.sign({ key: importP_1.IMPORT_P.privKey.prv2 });
106
+ txBuilder
107
+ .build()
108
+ .then((ok) => assert_1.default.fail('it can sign'))
109
+ .catch((err) => {
110
+ err.message.should.be.equal(errorMessage.ERROR_KEY_CANNOT_SIGN);
111
+ });
112
+ });
113
+ it('Should 2 full sign a import tx from unsigned raw tx', () => {
114
+ const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tavaxp')).from(importP_1.IMPORT_P.rUnsignedTxHex);
115
+ txBuilder.sign({ key: importP_1.IMPORT_P.privKey.prv1 });
116
+ txBuilder
117
+ .build()
118
+ .then((ok) => assert_1.default.fail('it can sign'))
119
+ .catch((err) => {
120
+ err.message.should.be.equal(errorMessage.ERROR_KEY_CANNOT_SIGN);
121
+ });
122
+ });
123
+ });
124
+ });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0UDJDVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9pbXBvcnRQMkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGtCQUFnQjtBQUNoQixnRUFBa0Q7QUFDbEQscUVBQXVEO0FBQ3ZELDBDQUE2RTtBQUM3RSxpREFBNEM7QUFDNUMsMEVBQThDO0FBQzlDLHdEQUFzRDtBQUV0RCxRQUFRLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFN0MsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQyxFQUNELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FBQyxxQkFBcUIsQ0FDeEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRTtZQUMvRCxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN2RCxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxD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QUFDO1FBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtZQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGtCQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0MsU0FBUztpQkFDTixLQUFLLEVBQUU7aUJBQ1AsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDeEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9hdmF4cCc7XG5pbXBvcnQgKiBhcyBlcnJvck1lc3NhZ2UgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaWduRmxvd1Rlc3QgZnJvbSAnLi9zaWduRmxvd1Rlc3RTdWl0JztcbmltcG9ydCB7IElNUE9SVF9QIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3R4L2ltcG9ydFAnO1xuXG5kZXNjcmliZSgnQXZheFAgSW1wb3J0IFAyQyBUeCBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSk7XG4gIGRlc2NyaWJlKCd2YWxpZGF0ZSB0eEJ1aWxkZXIgZmllbGRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0SW1wb3J0QnVpbGRlcigpO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRhcmdldCBjaGFpbiBpZCBsZW5ndGggaW5jb3JyZWN0JywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlcm5hbENoYWluSWQoQnVmZmVyLmZyb20odGVzdERhdGEuSU5WQUxJRF9DSEFJTl9JRCkpO1xuICAgICAgICB9LFxuICAgICAgICAoZSkgPT4gZS5tZXNzYWdlID09PSBlcnJvck1lc3NhZ2UuRVJST1JfQ0hBSU5fSURfTEVOR1RIXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRhcmdldCBjaGFpbiBpZCBub3QgYSB2YWlsZCBiYXNlNTggc3RyaW5nJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlcm5hbENoYWluSWQodGVzdERhdGEuSU5WQUxJRF9DSEFJTl9JRCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlKSA9PiBlLm1lc3NhZ2UgPT09IGVycm9yTWVzc2FnZS5FUlJPUl9DSEFJTl9JRF9OT1RfQkFTRTU4XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRhcmdldCBjaGFpbiBpZCBjYjU4IGludmFsaWQgY2hlY2tzdW0nLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4dGVybmFsQ2hhaW5JZCh0ZXN0RGF0YS5WQUxJRF9DX0NIQUlOX0lELnNsaWNlKDIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGUpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX0NIQUlOX0lEX0lOVkFMSURfQ0hFQ0tTVU1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmFsaWRhdGUgVXR4b3MgZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci52YWxpZGF0ZVV0eG9zKFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGUpID0+IGUubWVzc2FnZSA9PT0gZXJyb3JNZXNzYWdlLkVSUk9SX1VUWE9TX0VNUFRZXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZhbGlkYXRlIFV0eG9zIHdpdGhvdXQgYW1vdW50IGZpZWxkJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci52YWxpZGF0ZVV0eG9zKFt7IG91dHB1dElEOiAnJyB9IGFzIGFueSBhcyBEZWNvZGVkVXR4b09ial0pO1xuICAgICAgICB9LFxuICAgICAgICAoZSkgPT4gZS5tZXNzYWdlID09PSBlcnJvck1lc3NhZ2UuRVJST1JfVVRYT1NfQU1PVU5UXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBzaWduRmxvd1Rlc3Qoe1xuICAgIHRyYW5zYWN0aW9uVHlwZTogJ0ltcG9ydCBQMkMnLFxuICAgIG5ld1R4RmFjdG9yeTogKCkgPT4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSksXG4gICAgbmV3VHhCdWlsZGVyOiAoKSA9PlxuICAgICAgbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0YXZheHAnKSlcbiAgICAgICAgLmdldEltcG9ydEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKElNUE9SVF9QLnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKElNUE9SVF9QLmxvY2t0aW1lKVxuICAgICAgICAuZnJvbVB1YktleShJTVBPUlRfUC5wQWRkcmVzc2VzKVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKElNUE9SVF9QLnRhcmdldENoYWluSWQpXG4gICAgICAgIC5tZW1vKElNUE9SVF9QLm1lbW8pXG4gICAgICAgIC51dHhvcyhJTVBPUlRfUC5vdXRwdXRzKSxcbiAgICB1bnNpZ25lZFR4SGV4OiBJTVBPUlRfUC51bnNpZ25lZFR4SGV4LFxuICAgIGhhbGZzaWdudHhIZXg6IElNUE9SVF9QLmhhbGZzaWdudHhIZXgsXG4gICAgZnVsbHNpZ250eEhleDogSU1QT1JUX1AuZnVsbHNpZ250eEhleCxcbiAgICBwcml2S2V5OiB7XG4gICAgICBwcnYxOiBJTVBPUlRfUC5wcml2S2V5LnBydjEsXG4gICAgICBwcnYyOiBJTVBPUlRfUC5wcml2S2V5LnBydjIsXG4gICAgfSxcbiAgfSk7XG5cbiAgc2lnbkZsb3dUZXN0KHtcbiAgICB0cmFuc2FjdGlvblR5cGU6ICdJbXBvcnQgUDJDIHJlY292ZXJ5JyxcbiAgICBuZXdUeEZhY3Rvcnk6ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLFxuICAgIG5ld1R4QnVpbGRlcjogKCkgPT5cbiAgICAgIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpXG4gICAgICAgIC5nZXRJbXBvcnRCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZChJTVBPUlRfUC50aHJlc2hvbGQpXG4gICAgICAgIC5sb2NrdGltZShJTVBPUlRfUC5sb2NrdGltZSlcbiAgICAgICAgLmZyb21QdWJLZXkoSU1QT1JUX1AucEFkZHJlc3NlcylcbiAgICAgICAgLmV4dGVybmFsQ2hhaW5JZChJTVBPUlRfUC50YXJnZXRDaGFpbklkKVxuICAgICAgICAubWVtbyhJTVBPUlRfUC5tZW1vKVxuICAgICAgICAudXR4b3MoSU1QT1JUX1Aub3V0cHV0cylcbiAgICAgICAgLnJlY292ZXJNb2RlKCksXG4gICAgdW5zaWduZWRUeEhleDogSU1QT1JUX1AuclVuc2lnbmVkVHhIZXgsXG4gICAgaGFsZnNpZ250eEhleDogSU1QT1JUX1AuckhhbGZzaWdudHhIZXgsXG4gICAgZnVsbHNpZ250eEhleDogSU1QT1JUX1AuckZ1bGxzaWdudHhIZXgsXG4gICAgcHJpdktleToge1xuICAgICAgcHJ2MTogSU1QT1JUX1AucHJpdktleS5wcnYzLFxuICAgICAgcHJ2MjogSU1QT1JUX1AucHJpdktleS5wcnYyLFxuICAgIH0sXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXkgY2Fubm90IHNpZ24gdGhlIHRyYW5zYWN0aW9uICcsICgpID0+IHtcbiAgICBpdCgnU2hvdWxkIGZ1bGwgc2lnbiBhIGltcG9ydCB0eCBmcm9tIHVuc2lnbmVkIHJhdyB0eCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGF2YXhwJykpLmZyb20oSU1QT1JUX1AudW5zaWduZWRUeEhleCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogSU1QT1JUX1AucHJpdktleS5wcnYyIH0pO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC5idWlsZCgpXG4gICAgICAgIC50aGVuKChvaykgPT4gYXNzZXJ0LmZhaWwoJ2l0IGNhbiBzaWduJykpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLmJlLmVxdWFsKGVycm9yTWVzc2FnZS5FUlJPUl9LRVlfQ0FOTk9UX1NJR04pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgMiBmdWxsIHNpZ24gYSBpbXBvcnQgdHggZnJvbSB1bnNpZ25lZCByYXcgdHgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RhdmF4cCcpKS5mcm9tKElNUE9SVF9QLnJVbnNpZ25lZFR4SGV4KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBJTVBPUlRfUC5wcml2S2V5LnBydjEgfSk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLmJ1aWxkKClcbiAgICAgICAgLnRoZW4oKG9rKSA9PiBhc3NlcnQuZmFpbCgnaXQgY2FuIHNpZ24nKSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBlcnIubWVzc2FnZS5zaG91bGQuYmUuZXF1YWwoZXJyb3JNZXNzYWdlLkVSUk9SX0tFWV9DQU5OT1RfU0lHTik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/keyPair.ts"],"names":[],"mappings":""}