@bitgo/sdk-coin-icp 1.19.2 → 1.19.3

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 (31) hide show
  1. package/dist/test/resources/icp.d.ts +268 -0
  2. package/dist/test/resources/icp.d.ts.map +1 -0
  3. package/dist/test/resources/icp.js +377 -0
  4. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  5. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  6. package/dist/test/unit/getBuilderFactory.js +10 -0
  7. package/dist/test/unit/icp.d.ts +2 -0
  8. package/dist/test/unit/icp.d.ts.map +1 -0
  9. package/dist/test/unit/icp.js +246 -0
  10. package/dist/test/unit/keyPair.d.ts +2 -0
  11. package/dist/test/unit/keyPair.d.ts.map +1 -0
  12. package/dist/test/unit/keyPair.js +107 -0
  13. package/dist/test/unit/transaction.d.ts +2 -0
  14. package/dist/test/unit/transaction.d.ts.map +1 -0
  15. package/dist/test/unit/transaction.js +109 -0
  16. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  17. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  18. package/dist/test/unit/transactionBuilder/transactionBuilder.js +274 -0
  19. package/dist/test/unit/transactionBuilder/transactionRecover.d.ts +2 -0
  20. package/dist/test/unit/transactionBuilder/transactionRecover.d.ts.map +1 -0
  21. package/dist/test/unit/transactionBuilder/transactionRecover.js +188 -0
  22. package/dist/test/unit/utils.d.ts +2 -0
  23. package/dist/test/unit/utils.d.ts.map +1 -0
  24. package/dist/test/unit/utils.js +206 -0
  25. package/dist/tsconfig.tsbuildinfo +1 -0
  26. package/package.json +10 -7
  27. package/.eslintignore +0 -4
  28. package/.mocharc.yml +0 -8
  29. package/CHANGELOG.md +0 -289
  30. package/resources/messageCompiled.d.ts +0 -797
  31. package/resources/messageCompiled.js +0 -1859
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const sdk_test_1 = require("@bitgo/sdk-test");
40
+ const sdk_api_1 = require("@bitgo/sdk-api");
41
+ const utils_1 = __importDefault(require("../../src/lib/utils"));
42
+ const getBuilderFactory_1 = require("./getBuilderFactory");
43
+ const index_1 = require("../../src/index");
44
+ const nock_1 = __importDefault(require("nock"));
45
+ const testData = __importStar(require("../resources/icp"));
46
+ const assert_1 = __importDefault(require("assert"));
47
+ const should_1 = __importDefault(require("should"));
48
+ nock_1.default.enableNetConnect();
49
+ const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
50
+ bitgo.safeRegister('ticp', index_1.Ticp.createInstance);
51
+ describe('Internet computer', function () {
52
+ let bitgo;
53
+ let basecoin;
54
+ const factory = (0, getBuilderFactory_1.getBuilderFactory)('ticp');
55
+ let txBuilder;
56
+ before(async function () {
57
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
58
+ bitgo.safeRegister('icp', index_1.Icp.createInstance);
59
+ bitgo.safeRegister('ticp', index_1.Ticp.createInstance);
60
+ bitgo.initializeTestVars();
61
+ basecoin = bitgo.coin('ticp');
62
+ txBuilder = factory.getTransferBuilder();
63
+ txBuilder.sender(testData.Accounts.account1.address, testData.Accounts.account1.publicKey);
64
+ txBuilder.receiverId(testData.Accounts.account2.address);
65
+ txBuilder.amount('10');
66
+ txBuilder.memo(testData.MetaDataWithMemo.memo);
67
+ await txBuilder.build();
68
+ });
69
+ after(function () {
70
+ nock_1.default.pendingMocks().should.be.empty();
71
+ nock_1.default.cleanAll();
72
+ });
73
+ it('should return the right info', function () {
74
+ const icp = bitgo.coin('icp');
75
+ const ticp = bitgo.coin('ticp');
76
+ icp.getChain().should.equal('icp');
77
+ icp.getFamily().should.equal('icp');
78
+ icp.getFullName().should.equal('Internet Computer');
79
+ icp.getBaseFactor().should.equal(1e8);
80
+ icp.supportsTss().should.equal(true);
81
+ ticp.getChain().should.equal('ticp');
82
+ ticp.getFamily().should.equal('icp');
83
+ ticp.getFullName().should.equal('Testnet Internet Computer');
84
+ ticp.getBaseFactor().should.equal(1e8);
85
+ icp.supportsTss().should.equal(true);
86
+ });
87
+ describe('Address creation', () => {
88
+ const hexEncodedPublicKey = '047a83e378053f87b49aeae53b3ed274c8b2ffbe59d9a51e3c4d850ca8ac1684f7131b778317c0db04de661c7d08321d60c0507868af41fe3150d21b3c6c757367';
89
+ const hexEncodedPublicKey2 = '02ad010ce68b75266c723bf25fbe3a0c48eb29f14b25925b06b7f5026a0f12702e';
90
+ const invalidPublicKey = 'invalid-public-key';
91
+ const validAccountID = '8b84c3a3529d02a9decb5b1a27e7c8d886e17e07ea0a538269697ef09c2a27b4';
92
+ const validAccountID2 = '2b9b89604362e185544c8bba76cadff1a3af26e1467e8530d13743a08a52dd7b';
93
+ it('should return true when validating a hex encoded public key', function () {
94
+ basecoin.isValidPub(hexEncodedPublicKey).should.equal(true);
95
+ });
96
+ it('should return true when validating a hex encoded public key with 33 bytes ', function () {
97
+ basecoin.isValidPub(hexEncodedPublicKey2).should.equal(true);
98
+ });
99
+ it('should return false when validating a invalid public key', function () {
100
+ basecoin.isValidPub(invalidPublicKey).should.equal(false);
101
+ });
102
+ it('should return valid address from a valid hex encoded public key', async function () {
103
+ const accountID = await basecoin.getAddressFromPublicKey(hexEncodedPublicKey);
104
+ accountID.should.deepEqual(validAccountID);
105
+ });
106
+ it('should return valid address from a valid hex encoded public key with 33 bytes', async function () {
107
+ const accountID = await basecoin.getAddressFromPublicKey(hexEncodedPublicKey2);
108
+ accountID.should.deepEqual(validAccountID2);
109
+ });
110
+ it('should throw an error when invalid public key is provided', async function () {
111
+ await basecoin
112
+ .getAddressFromPublicKey(invalidPublicKey)
113
+ .should.be.rejectedWith(`Invalid hex-encoded public key format.`);
114
+ });
115
+ it('should return valid address from a valid hex encoded public key', async function () {
116
+ const accountID = await utils_1.default.getAddressFromPublicKey(hexEncodedPublicKey);
117
+ accountID.should.deepEqual(validAccountID);
118
+ });
119
+ it('should throw an error when invalid public key is provided', async function () {
120
+ await utils_1.default
121
+ .getAddressFromPublicKey(invalidPublicKey)
122
+ .should.be.rejectedWith(`Invalid hex-encoded public key format.`);
123
+ });
124
+ });
125
+ describe('Generate wallet key pair: ', () => {
126
+ it('should generate key pair', () => {
127
+ const kp = basecoin.generateKeyPair();
128
+ basecoin.isValidPub(kp.pub).should.equal(true);
129
+ basecoin.isValidPrv(kp.prv).should.equal(true);
130
+ });
131
+ it('should generate key pair from seed', () => {
132
+ const seed = Buffer.from('9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60', 'hex');
133
+ const kp = basecoin.generateKeyPair(seed);
134
+ basecoin.isValidPub(kp.pub).should.equal(true);
135
+ basecoin.isValidPrv(kp.prv).should.equal(true);
136
+ });
137
+ });
138
+ describe('Sign a raw txn with a private key', () => {
139
+ it('should sign a raw txn with a private key', async () => {
140
+ const unsignedTxn = txBuilder.transaction.unsignedTransaction;
141
+ unsignedTxn.should.be.a.String();
142
+ const payloadsData = txBuilder.transaction.payloadsData;
143
+ const serializedTxFormat = {
144
+ serializedTxHex: payloadsData,
145
+ publicKey: testData.Accounts.account1.publicKey,
146
+ };
147
+ const serializedTxHex = Buffer.from(JSON.stringify(serializedTxFormat), 'utf-8').toString('hex');
148
+ const signedTxn = await basecoin.signTransaction({
149
+ txPrebuild: {
150
+ txHex: serializedTxHex,
151
+ },
152
+ prv: testData.Accounts.account1.secretKey,
153
+ });
154
+ signedTxn.should.be.a.string;
155
+ const parsedTransaction = await factory.parseTransaction(signedTxn.txHex, true);
156
+ should_1.default.equal(parsedTransaction.operations[0].account.address, testData.Accounts.account1.address);
157
+ should_1.default.equal(parsedTransaction.operations[1].account.address, testData.Accounts.account2.address);
158
+ should_1.default.equal(parsedTransaction.operations[2].account.address, testData.Accounts.account1.address);
159
+ should_1.default.equal(parsedTransaction.operations[0].amount.value, '-10');
160
+ should_1.default.equal(parsedTransaction.account_identifier_signers[0].address, testData.Accounts.account1.address);
161
+ });
162
+ });
163
+ describe('Verify a transaction', () => {
164
+ it('should successfully verify a transaction with signable Hex', async () => {
165
+ const unsignedTxn = txBuilder.transaction.unsignedTransaction;
166
+ unsignedTxn.should.be.a.String();
167
+ const payloadsData = txBuilder.transaction.payloadsData;
168
+ const serializedTxFormat = {
169
+ serializedTxHex: payloadsData,
170
+ publicKey: testData.Accounts.account1.publicKey,
171
+ };
172
+ const signableHex = payloadsData.payloads[0].hex_bytes;
173
+ const serializedTxHex = Buffer.from(JSON.stringify(serializedTxFormat), 'utf-8').toString('hex');
174
+ const txParams = {
175
+ recipients: [
176
+ {
177
+ address: testData.Accounts.account2.address,
178
+ amount: '10',
179
+ },
180
+ ],
181
+ };
182
+ const response = await basecoin.verifyTransaction({
183
+ txPrebuild: {
184
+ txHex: serializedTxHex,
185
+ txInfo: signableHex,
186
+ },
187
+ txParams: txParams,
188
+ });
189
+ (0, assert_1.default)(response);
190
+ });
191
+ it('should successfully verify a transaction without signable Hex', async () => {
192
+ const unsignedTxn = txBuilder.transaction.unsignedTransaction;
193
+ unsignedTxn.should.be.a.String();
194
+ const payloadsData = txBuilder.transaction.payloadsData;
195
+ const serializedTxFormat = {
196
+ serializedTxHex: payloadsData,
197
+ publicKey: testData.Accounts.account1.publicKey,
198
+ };
199
+ const serializedTxHex = Buffer.from(JSON.stringify(serializedTxFormat), 'utf-8').toString('hex');
200
+ const txParams = {
201
+ recipients: [
202
+ {
203
+ address: testData.Accounts.account2.address,
204
+ amount: '10',
205
+ },
206
+ ],
207
+ };
208
+ const response = await basecoin.verifyTransaction({
209
+ txPrebuild: {
210
+ txHex: serializedTxHex,
211
+ },
212
+ txParams: txParams,
213
+ });
214
+ (0, assert_1.default)(response);
215
+ });
216
+ it('should fail to verify a transaction with wrong signable Hex', async () => {
217
+ const unsignedTxn = txBuilder.transaction.unsignedTransaction;
218
+ unsignedTxn.should.be.a.String();
219
+ const payloadsData = txBuilder.transaction.payloadsData;
220
+ const serializedTxFormat = {
221
+ serializedTxHex: payloadsData,
222
+ publicKey: testData.Accounts.account1.publicKey,
223
+ };
224
+ const serializedTxHex = Buffer.from(JSON.stringify(serializedTxFormat), 'utf-8').toString('hex');
225
+ const txParams = {
226
+ recipients: [
227
+ {
228
+ address: testData.Accounts.account2.address,
229
+ amount: '10',
230
+ },
231
+ ],
232
+ };
233
+ const wrongSignableHexValues = '0a69632d72657175657374523de3c7c5b4613155b74ede2e54493f6acbe8bf6d910154fbbb3a98ba3e0098';
234
+ await basecoin
235
+ .verifyTransaction({
236
+ txPrebuild: {
237
+ txHex: serializedTxHex,
238
+ txInfo: wrongSignableHexValues,
239
+ },
240
+ txParams: txParams,
241
+ })
242
+ .should.rejectedWith('generated signableHex is not equal to params.signableHex');
243
+ });
244
+ });
245
+ });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2ljcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUEwRDtBQUMxRCw0Q0FBMEM7QUFDMUMsZ0VBQXdDO0FBQ3hDLDJEQUF3RDtBQUV4RCwyQ0FBNEM7QUFDNUMsZ0RBQXdCO0FBQ3hCLDJEQUE2QztBQUM3QyxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLGNBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBRXhCLE1BQU0sS0FBSyxHQUFpQixvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsWUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRWhELFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksUUFBUSxDQUFDO0lBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxJQUFJLFNBQWMsQ0FBQztJQUVuQixNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5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QjtpQkFDL0I7Z0JBQ0QsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQztpQkFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vZ2V0QnVpbGRlckZhY3RvcnknO1xuXG5pbXBvcnQgeyBJY3AsIFRpY3AgfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0IG5vY2sgZnJvbSAnbm9jayc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvaWNwJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbm5vY2suZW5hYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBiaXRnbzogVGVzdEJpdEdvQVBJID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuYml0Z28uc2FmZVJlZ2lzdGVyKCd0aWNwJywgVGljcC5jcmVhdGVJbnN0YW5jZSk7XG5cbmRlc2NyaWJlKCdJbnRlcm5ldCBjb21wdXRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgYmFzZWNvaW47XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgndGljcCcpO1xuICBsZXQgdHhCdWlsZGVyOiBhbnk7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ2ljcCcsIEljcC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0aWNwJywgVGljcC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0aWNwJyk7XG5cbiAgICB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcywgdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5KTtcbiAgICB0eEJ1aWxkZXIucmVjZWl2ZXJJZCh0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKTtcbiAgICB0eEJ1aWxkZXIuYW1vdW50KCcxMCcpO1xuICAgIHR4QnVpbGRlci5tZW1vKHRlc3REYXRhLk1ldGFEYXRhV2l0aE1lbW8ubWVtbyk7XG5cbiAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgfSk7XG5cbiAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgIG5vY2sucGVuZGluZ01vY2tzKCkuc2hvdWxkLmJlLmVtcHR5KCk7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpY3AgPSBiaXRnby5jb2luKCdpY3AnKTtcbiAgICBjb25zdCB0aWNwID0gYml0Z28uY29pbigndGljcCcpO1xuXG4gICAgaWNwLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCdpY3AnKTtcbiAgICBpY3AuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdpY3AnKTtcbiAgICBpY3AuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ0ludGVybmV0IENvbXB1dGVyJyk7XG4gICAgaWNwLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU4KTtcbiAgICBpY3Auc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG5cbiAgICB0aWNwLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0aWNwJyk7XG4gICAgdGljcC5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ2ljcCcpO1xuICAgIHRpY3AuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgSW50ZXJuZXQgQ29tcHV0ZXInKTtcbiAgICB0aWNwLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU4KTtcbiAgICBpY3Auc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIGNyZWF0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IGhleEVuY29kZWRQdWJsaWNLZXkgPVxuICAgICAgJzA0N2E4M2UzNzgwNTNmODdiNDlhZWFlNTNiM2VkMjc0YzhiMmZmYmU1OWQ5YTUxZTNjNGQ4NTBjYThhYzE2ODRmNzEzMWI3NzgzMTdjMGRiMDRkZTY2MWM3ZDA4MzIxZDYwYzA1MDc4NjhhZjQxZmUzMTUwZDIxYjNjNmM3NTczNjcnO1xuICAgIGNvbnN0IGhleEVuY29kZWRQdWJsaWNLZXkyID0gJzAyYWQwMTBjZTY4Yjc1MjY2YzcyM2JmMjVmYmUzYTBjNDhlYjI5ZjE0YjI1OTI1YjA2YjdmNTAyNmEwZjEyNzAyZSc7XG4gICAgY29uc3QgaW52YWxpZFB1YmxpY0tleSA9ICdpbnZhbGlkLXB1YmxpYy1rZXknO1xuICAgIGNvbnN0IHZhbGlkQWNjb3VudElEID0gJzhiODRjM2EzNTI5ZDAyYTlkZWNiNWIxYTI3ZTdjOGQ4ODZlMTdlMDdlYTBhNTM4MjY5Njk3ZWYwOWMyYTI3YjQnO1xuICAgIGNvbnN0IHZhbGlkQWNjb3VudElEMiA9ICcyYjliODk2MDQzNjJlMTg1NTQ0YzhiYmE3NmNhZGZmMWEzYWYyNmUxNDY3ZTg1MzBkMTM3NDNhMDhhNTJkZDdiJztcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWxpZGF0aW5nIGEgaGV4IGVuY29kZWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoaGV4RW5jb2RlZFB1YmxpY0tleSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbGlkYXRpbmcgYSBoZXggZW5jb2RlZCBwdWJsaWMga2V5IHdpdGggMzMgYnl0ZXMgJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YihoZXhFbmNvZGVkUHVibGljS2V5Mikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWxpZGF0aW5nIGEgaW52YWxpZCBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YihpbnZhbGlkUHVibGljS2V5KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgYWRkcmVzcyBmcm9tIGEgdmFsaWQgaGV4IGVuY29kZWQgcHVibGljIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRJRCA9IGF3YWl0IGJhc2Vjb2luLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgYWNjb3VudElELnNob3VsZC5kZWVwRXF1YWwodmFsaWRBY2NvdW50SUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgYWRkcmVzcyBmcm9tIGEgdmFsaWQgaGV4IGVuY29kZWQgcHVibGljIGtleSB3aXRoIDMzIGJ5dGVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudElEID0gYXdhaXQgYmFzZWNvaW4uZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoaGV4RW5jb2RlZFB1YmxpY0tleTIpO1xuICAgICAgYWNjb3VudElELnNob3VsZC5kZWVwRXF1YWwodmFsaWRBY2NvdW50SUQyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBpbnZhbGlkIHB1YmxpYyBrZXkgaXMgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoaW52YWxpZFB1YmxpY0tleSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoYEludmFsaWQgaGV4LWVuY29kZWQgcHVibGljIGtleSBmb3JtYXQuYCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB2YWxpZCBhZGRyZXNzIGZyb20gYSB2YWxpZCBoZXggZW5jb2RlZCBwdWJsaWMga2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudElEID0gYXdhaXQgdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoaGV4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgICBhY2NvdW50SUQuc2hvdWxkLmRlZXBFcXVhbCh2YWxpZEFjY291bnRJRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gaW52YWxpZCBwdWJsaWMga2V5IGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgdXRpbHNcbiAgICAgICAgLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGludmFsaWRQdWJsaWNLZXkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKGBJbnZhbGlkIGhleC1lbmNvZGVkIHB1YmxpYyBrZXkgZm9ybWF0LmApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnR2VuZXJhdGUgd2FsbGV0IGtleSBwYWlyOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBrZXkgcGFpcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGtwID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKGtwLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFBydihrcC5wcnYpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VlZCA9IEJ1ZmZlci5mcm9tKCc5ZDYxYjE5ZGVmZmQ1YTYwYmE4NDRhZjQ5MmVjMmNjNDQ0NDljNTY5N2IzMjY5MTk3MDNiYWMwMzFjYWU3ZjYwJywgJ2hleCcpO1xuICAgICAgY29uc3Qga3AgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoc2VlZCk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKGtwLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFBydihrcC5wcnYpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NpZ24gYSByYXcgdHhuIHdpdGggYSBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gYSByYXcgdHhuIHdpdGggYSBwcml2YXRlIGtleScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVuc2lnbmVkVHhuID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnVuc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgICB1bnNpZ25lZFR4bi5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHBheWxvYWRzRGF0YSA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi5wYXlsb2Fkc0RhdGE7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhGb3JtYXQgPSB7XG4gICAgICAgIHNlcmlhbGl6ZWRUeEhleDogcGF5bG9hZHNEYXRhLFxuICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSxcbiAgICAgIH07XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShzZXJpYWxpemVkVHhGb3JtYXQpLCAndXRmLTgnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBzaWduZWRUeG4gPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHNlcmlhbGl6ZWRUeEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXksXG4gICAgICB9KTtcbiAgICAgIHNpZ25lZFR4bi5zaG91bGQuYmUuYS5zdHJpbmc7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGZhY3RvcnkucGFyc2VUcmFuc2FjdGlvbihzaWduZWRUeG4udHhIZXgsIHRydWUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZFRyYW5zYWN0aW9uLm9wZXJhdGlvbnNbMF0uYWNjb3VudC5hZGRyZXNzLCB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRUcmFuc2FjdGlvbi5vcGVyYXRpb25zWzFdLmFjY291bnQuYWRkcmVzcywgdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwocGFyc2VkVHJhbnNhY3Rpb24ub3BlcmF0aW9uc1syXS5hY2NvdW50LmFkZHJlc3MsIHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZFRyYW5zYWN0aW9uLm9wZXJhdGlvbnNbMF0uYW1vdW50LnZhbHVlLCAnLTEwJyk7XG4gICAgICBzaG91bGQuZXF1YWwocGFyc2VkVHJhbnNhY3Rpb24uYWNjb3VudF9pZGVudGlmaWVyX3NpZ25lcnNbMF0uYWRkcmVzcywgdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWZXJpZnkgYSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSB2ZXJpZnkgYSB0cmFuc2FjdGlvbiB3aXRoIHNpZ25hYmxlIEhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVuc2lnbmVkVHhuID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnVuc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgICB1bnNpZ25lZFR4bi5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHBheWxvYWRzRGF0YSA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi5wYXlsb2Fkc0RhdGE7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhGb3JtYXQgPSB7XG4gICAgICAgIHNlcmlhbGl6ZWRUeEhleDogcGF5bG9hZHNEYXRhLFxuICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWduYWJsZUhleCA9IHBheWxvYWRzRGF0YS5wYXlsb2Fkc1swXS5oZXhfYnl0ZXM7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShzZXJpYWxpemVkVHhGb3JtYXQpLCAndXRmLTgnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBzZXJpYWxpemVkVHhIZXgsXG4gICAgICAgICAgdHhJbmZvOiBzaWduYWJsZUhleCxcbiAgICAgICAgfSxcbiAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zLFxuICAgICAgfSk7XG4gICAgICBhc3NlcnQocmVzcG9uc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZXNzZnVsbHkgdmVyaWZ5IGEgdHJhbnNhY3Rpb24gd2l0aG91dCBzaWduYWJsZSBIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1bnNpZ25lZFR4biA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi51bnNpZ25lZFRyYW5zYWN0aW9uO1xuICAgICAgdW5zaWduZWRUeG4uc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4Rm9ybWF0ID0ge1xuICAgICAgICBzZXJpYWxpemVkVHhIZXg6IHBheWxvYWRzRGF0YSxcbiAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXksXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXplZFR4Rm9ybWF0KSwgJ3V0Zi04JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogc2VyaWFsaXplZFR4SGV4LFxuICAgICAgICB9LFxuICAgICAgICB0eFBhcmFtczogdHhQYXJhbXMsXG4gICAgICB9KTtcbiAgICAgIGFzc2VydChyZXNwb25zZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IGEgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBzaWduYWJsZSBIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1bnNpZ25lZFR4biA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi51bnNpZ25lZFRyYW5zYWN0aW9uO1xuICAgICAgdW5zaWduZWRUeG4uc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4Rm9ybWF0ID0ge1xuICAgICAgICBzZXJpYWxpemVkVHhIZXg6IHBheWxvYWRzRGF0YSxcbiAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXksXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXplZFR4Rm9ybWF0KSwgJ3V0Zi04JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB3cm9uZ1NpZ25hYmxlSGV4VmFsdWVzID1cbiAgICAgICAgJzBhNjk2MzJkNzI2NTcxNzU2NTczNzQ1MjNkZTNjN2M1YjQ2MTMxNTViNzRlZGUyZTU0NDkzZjZhY2JlOGJmNmQ5MTAxNTRmYmJiM2E5OGJhM2UwMDk4JztcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgICB0eEhleDogc2VyaWFsaXplZFR4SGV4LFxuICAgICAgICAgICAgdHhJbmZvOiB3cm9uZ1NpZ25hYmxlSGV4VmFsdWVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnZ2VuZXJhdGVkIHNpZ25hYmxlSGV4IGlzIG5vdCBlcXVhbCB0byBwYXJhbXMuc2lnbmFibGVIZXgnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -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/keyPair.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const should_1 = __importDefault(require("should"));
7
+ const keyPair_1 = require("../../src/lib/keyPair");
8
+ const crypto_1 = require("crypto");
9
+ describe('ICP KeyPair', () => {
10
+ describe('constructor', () => {
11
+ it('should generate a key pair with a random seed when no source is provided', () => {
12
+ const keyPair = new keyPair_1.KeyPair();
13
+ should_1.default.exist(keyPair);
14
+ const publicKey = keyPair.getKeys().pub;
15
+ const privateKey = keyPair.getKeys().prv;
16
+ should_1.default.exist(publicKey);
17
+ should_1.default.exist(privateKey);
18
+ publicKey.should.be.a.String();
19
+ if (privateKey) {
20
+ privateKey.should.be.a.String();
21
+ }
22
+ });
23
+ it('should generate a key pair from a given seed', () => {
24
+ const seed = (0, crypto_1.randomBytes)(32);
25
+ const keyPair = new keyPair_1.KeyPair({ seed });
26
+ should_1.default.exist(keyPair);
27
+ const publicKey = keyPair.getKeys().pub;
28
+ const privateKey = keyPair.getKeys().prv;
29
+ should_1.default.exist(publicKey);
30
+ should_1.default.exist(privateKey);
31
+ publicKey.should.be.a.String();
32
+ if (privateKey) {
33
+ privateKey.should.be.a.String();
34
+ }
35
+ });
36
+ it('should generate a key pair from a public key', () => {
37
+ const tempKeyPair = new keyPair_1.KeyPair();
38
+ const publicKey = tempKeyPair.getKeys().pub;
39
+ const keyPair = new keyPair_1.KeyPair({ pub: publicKey });
40
+ should_1.default.exist(keyPair);
41
+ should_1.default.exist(keyPair.getKeys().pub);
42
+ should_1.default.equal(keyPair.getKeys().pub, publicKey);
43
+ });
44
+ it('should generate different key pairs for different seeds', () => {
45
+ const seed1 = (0, crypto_1.randomBytes)(32);
46
+ const seed2 = (0, crypto_1.randomBytes)(32);
47
+ const keyPair1 = new keyPair_1.KeyPair({ seed: seed1 });
48
+ const keyPair2 = new keyPair_1.KeyPair({ seed: seed2 });
49
+ should_1.default.notEqual(keyPair1.getKeys().pub, keyPair2.getKeys().pub);
50
+ should_1.default.notEqual(keyPair1.getKeys().prv, keyPair2.getKeys().prv);
51
+ });
52
+ it('should generate the same key pair for the same seed', () => {
53
+ const seed = (0, crypto_1.randomBytes)(32);
54
+ const keyPair1 = new keyPair_1.KeyPair({ seed });
55
+ const keyPair2 = new keyPair_1.KeyPair({ seed });
56
+ should_1.default.equal(keyPair1.getKeys().pub, keyPair2.getKeys().pub);
57
+ should_1.default.equal(keyPair1.getKeys().prv, keyPair2.getKeys().prv);
58
+ });
59
+ });
60
+ describe('KeyPair getKeys()', () => {
61
+ it('should return valid public and private keys for a randomly generated key pair', () => {
62
+ const keyPair = new keyPair_1.KeyPair();
63
+ const keys = keyPair.getKeys();
64
+ should_1.default.exist(keys);
65
+ should_1.default.exist(keys.pub);
66
+ should_1.default.exist(keys.prv);
67
+ keys.pub.should.be.a.String();
68
+ keys.pub.length.should.be.greaterThan(0);
69
+ if (keys.prv) {
70
+ keys.prv.should.be.a.String();
71
+ keys.prv.length.should.be.greaterThan(0);
72
+ }
73
+ });
74
+ it('should return valid public and private keys for a key pair generated with a seed', () => {
75
+ const seed = (0, crypto_1.randomBytes)(32);
76
+ const keyPair = new keyPair_1.KeyPair({ seed });
77
+ const keys = keyPair.getKeys();
78
+ should_1.default.exist(keys);
79
+ should_1.default.exist(keys.pub);
80
+ should_1.default.exist(keys.prv);
81
+ keys.pub.should.be.a.String();
82
+ if (keys.prv) {
83
+ keys.prv.should.be.a.String();
84
+ }
85
+ });
86
+ it('should return only a public key when a key pair is generated from a public key', () => {
87
+ const tempKeyPair = new keyPair_1.KeyPair();
88
+ const publicKey = tempKeyPair.getKeys().pub;
89
+ const keyPair = new keyPair_1.KeyPair({ pub: publicKey });
90
+ const keys = keyPair.getKeys();
91
+ should_1.default.exist(keys);
92
+ should_1.default.exist(keys.pub);
93
+ should_1.default.equal(keys.pub, publicKey);
94
+ should_1.default.not.exist(keys.prv);
95
+ });
96
+ it('should generate consistent keys for the same seed', () => {
97
+ const seed = (0, crypto_1.randomBytes)(32);
98
+ const keyPair1 = new keyPair_1.KeyPair({ seed });
99
+ const keyPair2 = new keyPair_1.KeyPair({ seed });
100
+ const keys1 = keyPair1.getKeys();
101
+ const keys2 = keyPair2.getKeys();
102
+ should_1.default.equal(keys1.pub, keys2.pub);
103
+ should_1.default.equal(keys1.prv, keys2.prv);
104
+ });
105
+ });
106
+ });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUFnRDtBQUNoRCxtQ0FBcUM7QUFFckMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEdBQUcsRUFBRTtZQUNsRixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztZQUM5QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7WUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQkFBVyxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEMsZ0JBQU0sQ0FBQyxLQUFL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QU0sUUFBUSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWpDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuLi8uLi9zcmMvbGliL2tleVBhaXInO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5kZXNjcmliZSgnSUNQIEtleVBhaXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdjb25zdHJ1Y3RvcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBzZWVkIHdoZW4gbm8gc291cmNlIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKCk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpcik7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSBrZXlQYWlyLmdldEtleXMoKS5wdWI7XG4gICAgICBjb25zdCBwcml2YXRlS2V5ID0ga2V5UGFpci5nZXRLZXlzKCkucHJ2O1xuICAgICAgc2hvdWxkLmV4aXN0KHB1YmxpY0tleSk7XG4gICAgICBzaG91bGQuZXhpc3QocHJpdmF0ZUtleSk7XG4gICAgICBwdWJsaWNLZXkuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBpZiAocHJpdmF0ZUtleSkge1xuICAgICAgICBwcml2YXRlS2V5LnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIGtleSBwYWlyIGZyb20gYSBnaXZlbiBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VlZCA9IHJhbmRvbUJ5dGVzKDMyKTtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHNlZWQgfSk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpcik7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSBrZXlQYWlyLmdldEtleXMoKS5wdWI7XG4gICAgICBjb25zdCBwcml2YXRlS2V5ID0ga2V5UGFpci5nZXRLZXlzKCkucHJ2O1xuICAgICAgc2hvdWxkLmV4aXN0KHB1YmxpY0tleSk7XG4gICAgICBzaG91bGQuZXhpc3QocHJpdmF0ZUtleSk7XG4gICAgICBwdWJsaWNLZXkuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBpZiAocHJpdmF0ZUtleSkge1xuICAgICAgICBwcml2YXRlS2V5LnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIGtleSBwYWlyIGZyb20gYSBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3QgdGVtcEtleVBhaXIgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gdGVtcEtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pO1xuXG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpcik7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIHNob3VsZC5lcXVhbChrZXlQYWlyLmdldEtleXMoKS5wdWIsIHB1YmxpY0tleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGRpZmZlcmVudCBrZXkgcGFpcnMgZm9yIGRpZmZlcmVudCBzZWVkcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlZWQxID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgICAgY29uc3Qgc2VlZDIgPSByYW5kb21CeXRlcygzMik7XG4gICAgICBjb25zdCBrZXlQYWlyMSA9IG5ldyBLZXlQYWlyKHsgc2VlZDogc2VlZDEgfSk7XG4gICAgICBjb25zdCBrZXlQYWlyMiA9IG5ldyBLZXlQYWlyKHsgc2VlZDogc2VlZDIgfSk7XG5cbiAgICAgIHNob3VsZC5ub3RFcXVhbChrZXlQYWlyMS5nZXRLZXlzKCkucHViLCBrZXlQYWlyMi5nZXRLZXlzKCkucHViKTtcbiAgICAgIHNob3VsZC5ub3RFcXVhbChrZXlQYWlyMS5nZXRLZXlzKCkucHJ2LCBrZXlQYWlyMi5nZXRLZXlzKCkucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdGhlIHNhbWUga2V5IHBhaXIgZm9yIHRoZSBzYW1lIHNlZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWVkID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgICAgY29uc3Qga2V5UGFpcjEgPSBuZXcgS2V5UGFpcih7IHNlZWQgfSk7XG4gICAgICBjb25zdCBrZXlQYWlyMiA9IG5ldyBLZXlQYWlyKHsgc2VlZCB9KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIxLmdldEtleXMoKS5wdWIsIGtleVBhaXIyLmdldEtleXMoKS5wdWIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIxLmdldEtleXMoKS5wcnYsIGtleVBhaXIyLmdldEtleXMoKS5wcnYpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5UGFpciBnZXRLZXlzKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgcHVibGljIGFuZCBwcml2YXRlIGtleXMgZm9yIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGtleSBwYWlyJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKCk7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICAgIHNob3VsZC5leGlzdChrZXlzKTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlzLnB1Yik7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5cy5wcnYpO1xuICAgICAga2V5cy5wdWIuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBrZXlzLnB1Yi5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgaWYgKGtleXMucHJ2KSB7XG4gICAgICAgIGtleXMucHJ2LnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgICAgICBrZXlzLnBydi5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgcHVibGljIGFuZCBwcml2YXRlIGtleXMgZm9yIGEga2V5IHBhaXIgZ2VuZXJhdGVkIHdpdGggYSBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VlZCA9IHJhbmRvbUJ5dGVzKDMyKTtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHNlZWQgfSk7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICAgIHNob3VsZC5leGlzdChrZXlzKTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlzLnB1Yik7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5cy5wcnYpO1xuICAgICAga2V5cy5wdWIuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICBpZiAoa2V5cy5wcnYpIHtcbiAgICAgICAga2V5cy5wcnYuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBvbmx5IGEgcHVibGljIGtleSB3aGVuIGEga2V5IHBhaXIgaXMgZ2VuZXJhdGVkIGZyb20gYSBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3QgdGVtcEtleVBhaXIgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gdGVtcEtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pO1xuICAgICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuXG4gICAgICBzaG91bGQuZXhpc3Qoa2V5cyk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5cy5wdWIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleXMucHViLCBwdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChrZXlzLnBydik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGNvbnNpc3RlbnQga2V5cyBmb3IgdGhlIHNhbWUgc2VlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlZWQgPSByYW5kb21CeXRlcygzMik7XG4gICAgICBjb25zdCBrZXlQYWlyMSA9IG5ldyBLZXlQYWlyKHsgc2VlZCB9KTtcbiAgICAgIGNvbnN0IGtleVBhaXIyID0gbmV3IEtleVBhaXIoeyBzZWVkIH0pO1xuXG4gICAgICBjb25zdCBrZXlzMSA9IGtleVBhaXIxLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGtleXMyID0ga2V5UGFpcjIuZ2V0S2V5cygpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoa2V5czEucHViLCBrZXlzMi5wdWIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleXMxLnBydiwga2V5czIucHJ2KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":""}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const src_1 = require("../../src");
40
+ const statics_1 = require("@bitgo/statics");
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const should_1 = __importDefault(require("should"));
43
+ const utils_1 = __importDefault(require("../../src/lib/utils"));
44
+ const sdk_core_1 = require("@bitgo/sdk-core");
45
+ const testData = __importStar(require("../resources/icp"));
46
+ const getBuilderFactory_1 = require("./getBuilderFactory");
47
+ const sinon_1 = __importDefault(require("sinon"));
48
+ describe('ICP Transaction', () => {
49
+ let tx;
50
+ let serializedTxHex;
51
+ const config = statics_1.coins.get('ticp');
52
+ beforeEach(() => {
53
+ tx = new src_1.Transaction(config);
54
+ const serializedTxFormat = {
55
+ serializedTxHex: testData.PayloadsData,
56
+ publicKey: testData.Accounts.account1.publicKey,
57
+ };
58
+ serializedTxHex = Buffer.from(JSON.stringify(serializedTxFormat), 'utf-8').toString('hex');
59
+ sinon_1.default.stub(utils_1.default, 'validateExpireTime').returns(true);
60
+ });
61
+ afterEach(() => {
62
+ sinon_1.default.restore();
63
+ });
64
+ it('should throw an empty transaction error', () => {
65
+ assert_1.default.throws(() => tx.toBroadcastFormat(), (err) => err instanceof sdk_core_1.InvalidTransactionError && err.message === 'Empty transaction', 'Expected an InvalidTransactionError with message "Empty transaction"');
66
+ assert_1.default.throws(() => tx.toJson(), (err) => err instanceof sdk_core_1.InvalidTransactionError && err.message === 'Empty transaction', 'Expected an InvalidTransactionError with message "Empty transaction"');
67
+ });
68
+ it('start and build a txn with builder init method', async () => {
69
+ const txn = new src_1.Transaction(config);
70
+ txn.icpTransactionData = testData.IcpTransactionData;
71
+ const factory = (0, getBuilderFactory_1.getBuilderFactory)('ticp');
72
+ const txBuilder = factory.getTransferBuilder();
73
+ txBuilder.initBuilder(txn);
74
+ await txBuilder.build();
75
+ const icpTransaction = txBuilder.transaction.icpTransaction;
76
+ const payloadsData = txBuilder.transaction.payloadsData;
77
+ should_1.default.equal(icpTransaction.metadata.memo, testData.IcpTransactionData.memo);
78
+ should_1.default.equal(icpTransaction.operations[0].account.address, testData.IcpTransactionData.senderAddress);
79
+ should_1.default.equal(icpTransaction.operations[1].account.address, testData.IcpTransactionData.receiverAddress);
80
+ should_1.default.equal(icpTransaction.operations[1].amount.value, testData.IcpTransactionData.amount);
81
+ should_1.default.equal(icpTransaction.operations[2].amount.value, testData.IcpTransactionData.fee);
82
+ should_1.default.equal(icpTransaction.public_keys[0].hex_bytes, testData.IcpTransactionData.senderPublicKeyHex);
83
+ payloadsData.payloads.should.be.an.Array();
84
+ payloadsData.payloads.length.should.equal(1);
85
+ });
86
+ it('build a json transaction from raw hex', async () => {
87
+ await tx.fromRawTransaction(serializedTxHex);
88
+ const json = tx.toJson();
89
+ should_1.default.equal(json.memo, testData.ParsedRawTransaction.metadata.memo);
90
+ should_1.default.equal(json.feeAmount, testData.ParsedRawTransaction.operations[2].amount.value);
91
+ should_1.default.equal(json.sender, testData.ParsedRawTransaction.operations[0].account.address);
92
+ should_1.default.equal(json.recipient, testData.ParsedRawTransaction.operations[1].account.address);
93
+ should_1.default.equal(json.senderPublicKey, testData.Accounts.account1.publicKey);
94
+ should_1.default.equal(json.id, testData.OnChainTransactionHash);
95
+ });
96
+ it('explain transaction', async () => {
97
+ await tx.fromRawTransaction(serializedTxHex);
98
+ const explain = tx.explainTransaction();
99
+ explain.outputAmount.should.equal('10');
100
+ explain.outputs[0].amount.should.equal('10');
101
+ explain.outputs[0].address.should.equal(testData.Accounts.account2.address);
102
+ explain.fee.fee.should.equal('-10000');
103
+ explain.changeAmount.should.equal('0');
104
+ if (explain.displayOrder !== undefined) {
105
+ explain.displayOrder.should.deepEqual(['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs', 'fee']);
106
+ }
107
+ });
108
+ });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsZ0VBQXdDO0FBQ3hDLDhDQUEwRDtBQUMxRCwyREFBNkM7QUFDN0MsMkRBQXdEO0FBQ3hELGtEQUEwQjtBQUUxQixRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLElBQUksRUFBZSxDQUFDO0lBQ3BCLElBQUksZUFBb0IsQ0FBQztJQUN6QixNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxFQUFFLEdBQUcsSUFBSSxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sa0JBQWtCLEdBQUc7WUFDekIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxZQUFZO1lBQ3RDLFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1NBQ2hELENBQUM7UUFDRixlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLGVBQUssQ0FBQyxJQUFJLENBQUMsZUFBSyxFQUFFLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLGVBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUs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QyxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL2ljcCc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vZ2V0QnVpbGRlckZhY3RvcnknO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcblxuZGVzY3JpYmUoJ0lDUCBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgbGV0IHNlcmlhbGl6ZWRUeEhleDogYW55O1xuICBjb25zdCBjb25maWcgPSBjb2lucy5nZXQoJ3RpY3AnKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb25maWcpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeEZvcm1hdCA9IHtcbiAgICAgIHNlcmlhbGl6ZWRUeEhleDogdGVzdERhdGEuUGF5bG9hZHNEYXRhLFxuICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXksXG4gICAgfTtcbiAgICBzZXJpYWxpemVkVHhIZXggPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShzZXJpYWxpemVkVHhGb3JtYXQpLCAndXRmLTgnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgc2lub24uc3R1Yih1dGlscywgJ3ZhbGlkYXRlRXhwaXJlVGltZScpLnJldHVybnModHJ1ZSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVtcHR5IHRyYW5zYWN0aW9uIGVycm9yJywgKCkgPT4ge1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgKGVycikgPT4gZXJyIGluc3RhbmNlb2YgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgJiYgZXJyLm1lc3NhZ2UgPT09ICdFbXB0eSB0cmFuc2FjdGlvbicsXG4gICAgICAnRXhwZWN0ZWQgYW4gSW52YWxpZFRyYW5zYWN0aW9uRXJyb3Igd2l0aCBtZXNzYWdlIFwiRW1wdHkgdHJhbnNhY3Rpb25cIidcbiAgICApO1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PiB0eC50b0pzb24oKSxcbiAgICAgIChlcnIpID0+IGVyciBpbnN0YW5jZW9mIEludmFsaWRUcmFuc2FjdGlvbkVycm9yICYmIGVyci5tZXNzYWdlID09PSAnRW1wdHkgdHJhbnNhY3Rpb24nLFxuICAgICAgJ0V4cGVjdGVkIGFuIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIHdpdGggbWVzc2FnZSBcIkVtcHR5IHRyYW5zYWN0aW9uXCInXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3N0YXJ0IGFuZCBidWlsZCBhIHR4biB3aXRoIGJ1aWxkZXIgaW5pdCBtZXRob2QnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHhuID0gbmV3IFRyYW5zYWN0aW9uKGNvbmZpZyk7XG4gICAgdHhuLmljcFRyYW5zYWN0aW9uRGF0YSA9IHRlc3REYXRhLkljcFRyYW5zYWN0aW9uRGF0YTtcbiAgICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3RpY3AnKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eG4pO1xuICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb24gPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb247XG4gICAgY29uc3QgcGF5bG9hZHNEYXRhID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnBheWxvYWRzRGF0YTtcbiAgICBzaG91bGQuZXF1YWwoaWNwVHJhbnNhY3Rpb24ubWV0YWRhdGEubWVtbywgdGVzdERhdGEuSWNwVHJhbnNhY3Rpb25EYXRhLm1lbW8pO1xuICAgIHNob3VsZC5lcXVhbChpY3BUcmFuc2FjdGlvbi5vcGVyYXRpb25zWzBdLmFjY291bnQuYWRkcmVzcywgdGVzdERhdGEuSWNwVHJhbnNhY3Rpb25EYXRhLnNlbmRlckFkZHJlc3MpO1xuICAgIHNob3VsZC5lcXVhbChpY3BUcmFuc2FjdGlvbi5vcGVyYXRpb25zWzFdLmFjY291bnQuYWRkcmVzcywgdGVzdERhdGEuSWNwVHJhbnNhY3Rpb25EYXRhLnJlY2VpdmVyQWRkcmVzcyk7XG4gICAgc2hvdWxkLmVxdWFsKGljcFRyYW5zYWN0aW9uLm9wZXJhdGlvbnNbMV0uYW1vdW50LnZhbHVlLCB0ZXN0RGF0YS5JY3BUcmFuc2FjdGlvbkRhdGEuYW1vdW50KTtcbiAgICBzaG91bGQuZXF1YWwoaWNwVHJhbnNhY3Rpb24ub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUsIHRlc3REYXRhLkljcFRyYW5zYWN0aW9uRGF0YS5mZWUpO1xuICAgIHNob3VsZC5lcXVhbChpY3BUcmFuc2FjdGlvbi5wdWJsaWNfa2V5c1swXS5oZXhfYnl0ZXMsIHRlc3REYXRhLkljcFRyYW5zYWN0aW9uRGF0YS5zZW5kZXJQdWJsaWNLZXlIZXgpO1xuICAgIHBheWxvYWRzRGF0YS5wYXlsb2Fkcy5zaG91bGQuYmUuYW4uQXJyYXkoKTtcbiAgICBwYXlsb2Fkc0RhdGEucGF5bG9hZHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgfSk7XG5cbiAgaXQoJ2J1aWxkIGEganNvbiB0cmFuc2FjdGlvbiBmcm9tIHJhdyBoZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUeEhleCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbChqc29uLm1lbW8sIHRlc3REYXRhLlBhcnNlZFJhd1RyYW5zYWN0aW9uLm1ldGFkYXRhLm1lbW8pO1xuICAgIHNob3VsZC5lcXVhbChqc29uLmZlZUFtb3VudCwgdGVzdERhdGEuUGFyc2VkUmF3VHJhbnNhY3Rpb24ub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUpO1xuICAgIHNob3VsZC5lcXVhbChqc29uLnNlbmRlciwgdGVzdERhdGEuUGFyc2VkUmF3VHJhbnNhY3Rpb24ub3BlcmF0aW9uc1swXS5hY2NvdW50LmFkZHJlc3MpO1xuICAgIHNob3VsZC5lcXVhbChqc29uLnJlY2lwaWVudCwgdGVzdERhdGEuUGFyc2VkUmF3VHJhbnNhY3Rpb24ub3BlcmF0aW9uc1sxXS5hY2NvdW50LmFkZHJlc3MpO1xuICAgIHNob3VsZC5lcXVhbChqc29uLnNlbmRlclB1YmxpY0tleSwgdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5KTtcbiAgICBzaG91bGQuZXF1YWwoanNvbi5pZCwgdGVzdERhdGEuT25DaGFpblRyYW5zYWN0aW9uSGFzaCk7XG4gIH0pO1xuXG4gIGl0KCdleHBsYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHR4LmZyb21SYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHhIZXgpO1xuICAgIGNvbnN0IGV4cGxhaW4gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcblxuICAgIGV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCgnMTAnKTtcbiAgICBleHBsYWluLm91dHB1dHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbCgnMTAnKTtcbiAgICBleHBsYWluLm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyk7XG4gICAgZXhwbGFpbi5mZWUuZmVlLnNob3VsZC5lcXVhbCgnLTEwMDAwJyk7XG4gICAgZXhwbGFpbi5jaGFuZ2VBbW91bnQuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgaWYgKGV4cGxhaW4uZGlzcGxheU9yZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGxhaW4uZGlzcGxheU9yZGVyLnNob3VsZC5kZWVwRXF1YWwoWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnXSk7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":""}