@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.
- package/.eslintignore +5 -0
- package/.eslintrc.json +7 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +168 -0
- package/LICENSE +191 -0
- package/README.md +39 -0
- package/dist/src/avaxp.d.ts +69 -0
- package/dist/src/avaxp.d.ts.map +1 -0
- package/dist/src/avaxp.js +248 -0
- package/dist/src/iface.d.ts +43 -0
- package/dist/src/iface.d.ts.map +1 -0
- package/dist/src/iface.js +3 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +30 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts +33 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/atomicTransactionBuilder.js +122 -0
- package/dist/src/lib/delegatorTxBuilder.d.ts +96 -0
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegatorTxBuilder.js +287 -0
- package/dist/src/lib/errors.d.ts +8 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +19 -0
- package/dist/src/lib/exportTxBuilder.d.ts +34 -0
- package/dist/src/lib/exportTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/exportTxBuilder.js +88 -0
- package/dist/src/lib/iface.d.ts +58 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +18 -0
- package/dist/src/lib/importInCTxBuilder.d.ts +48 -0
- package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/importInCTxBuilder.js +152 -0
- package/dist/src/lib/importTxBuilder.d.ts +18 -0
- package/dist/src/lib/importTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/importTxBuilder.js +67 -0
- package/dist/src/lib/index.d.ts +9 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +29 -0
- package/dist/src/lib/keyPair.d.ts +59 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +151 -0
- package/dist/src/lib/transaction.d.ts +81 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +277 -0
- package/dist/src/lib/transactionBuilder.d.ts +122 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +224 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +42 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +107 -0
- package/dist/src/lib/transferBuilder.d.ts +18 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +31 -0
- package/dist/src/lib/utils.d.ts +152 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +300 -0
- package/dist/src/lib/utxoEngine.d.ts +45 -0
- package/dist/src/lib/utxoEngine.d.ts.map +1 -0
- package/dist/src/lib/utxoEngine.js +89 -0
- package/dist/src/lib/validatorTxBuilder.d.ts +37 -0
- package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/validatorTxBuilder.js +69 -0
- package/dist/src/tavaxp.d.ts +9 -0
- package/dist/src/tavaxp.d.ts.map +1 -0
- package/dist/src/tavaxp.js +14 -0
- package/dist/test/resources/avaxp.d.ts +178 -0
- package/dist/test/resources/avaxp.d.ts.map +1 -0
- package/dist/test/resources/avaxp.js +953 -0
- package/dist/test/resources/errors.d.ts +18 -0
- package/dist/test/resources/errors.d.ts.map +1 -0
- package/dist/test/resources/errors.js +21 -0
- package/dist/test/resources/keychains.d.ts +18 -0
- package/dist/test/resources/keychains.d.ts.map +1 -0
- package/dist/test/resources/keychains.js +30 -0
- package/dist/test/resources/tx/importC.d.ts +29 -0
- package/dist/test/resources/tx/importC.d.ts.map +1 -0
- package/dist/test/resources/tx/importC.js +42 -0
- package/dist/test/resources/tx/importP.d.ts +29 -0
- package/dist/test/resources/tx/importP.d.ts.map +1 -0
- package/dist/test/resources/tx/importP.js +42 -0
- package/dist/test/unit/avaxp.d.ts +2 -0
- package/dist/test/unit/avaxp.d.ts.map +1 -0
- package/dist/test/unit/avaxp.js +553 -0
- package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportP2CTxBuilder.js +173 -0
- package/dist/test/unit/lib/importC2PTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/importC2PTxBuilder.js +85 -0
- package/dist/test/unit/lib/importP2CTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/importP2CTxBuilder.js +125 -0
- package/dist/test/unit/lib/keyPair.d.ts +2 -0
- package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
- package/dist/test/unit/lib/keyPair.js +172 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +80 -0
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/lib/transactionBuilderFactory.js +114 -0
- package/dist/test/unit/lib/utils.d.ts +2 -0
- package/dist/test/unit/lib/utils.d.ts.map +1 -0
- package/dist/test/unit/lib/utils.js +69 -0
- package/dist/test/unit/lib/utxoEngine.d.ts +2 -0
- package/dist/test/unit/lib/utxoEngine.d.ts.map +1 -0
- package/dist/test/unit/lib/utxoEngine.js +168 -0
- package/dist/test/unit/lib/validateTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/validateTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/validateTxBuilder.js +318 -0
- package/dist/tsconfig.tsbuildinfo +10238 -0
- package/package.json +62 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/keyPair.ts"],"names":[],"mappings":""}
|