@bitgo-beta/abstract-eth 1.2.3-alpha.38 → 1.2.3-alpha.381

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 (121) hide show
  1. package/CHANGELOG.md +1722 -0
  2. package/dist/src/abstractEthLikeCoin.d.ts +18 -9
  3. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
  4. package/dist/src/abstractEthLikeCoin.js +39 -15
  5. package/dist/src/abstractEthLikeNewCoins.d.ts +749 -0
  6. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  7. package/dist/src/abstractEthLikeNewCoins.js +2229 -0
  8. package/dist/src/ethLikeToken.d.ts +36 -6
  9. package/dist/src/ethLikeToken.d.ts.map +1 -1
  10. package/dist/src/ethLikeToken.js +286 -10
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +8 -2
  14. package/dist/src/lib/contractCall.d.ts +8 -0
  15. package/dist/src/lib/contractCall.d.ts.map +1 -0
  16. package/dist/src/lib/contractCall.js +17 -0
  17. package/dist/src/lib/iface.d.ts +133 -0
  18. package/dist/src/lib/iface.d.ts.map +1 -0
  19. package/dist/src/lib/iface.js +8 -0
  20. package/dist/src/lib/index.d.ts +16 -0
  21. package/dist/src/lib/index.d.ts.map +1 -0
  22. package/dist/src/lib/index.js +57 -0
  23. package/dist/src/lib/keyPair.d.ts +26 -0
  24. package/dist/src/lib/keyPair.d.ts.map +1 -0
  25. package/dist/src/lib/keyPair.js +65 -0
  26. package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
  27. package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
  28. package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
  29. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
  30. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
  32. package/dist/src/lib/messages/eip191/index.d.ts +3 -0
  33. package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
  34. package/dist/src/lib/messages/eip191/index.js +19 -0
  35. package/dist/src/lib/messages/index.d.ts +3 -0
  36. package/dist/src/lib/messages/index.d.ts.map +1 -0
  37. package/dist/src/lib/messages/index.js +19 -0
  38. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  39. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  40. package/dist/src/lib/messages/messageBuilderFactory.js +20 -0
  41. package/dist/src/lib/transaction.d.ts +67 -0
  42. package/dist/src/lib/transaction.d.ts.map +1 -0
  43. package/dist/src/lib/transaction.js +142 -0
  44. package/dist/src/lib/transactionBuilder.d.ts +251 -0
  45. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  46. package/dist/src/lib/transactionBuilder.js +742 -0
  47. package/dist/src/lib/transferBuilder.d.ts +76 -0
  48. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  49. package/dist/src/lib/transferBuilder.js +307 -0
  50. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
  51. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  52. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
  53. package/dist/src/lib/transferBuilders/index.d.ts +4 -0
  54. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  55. package/dist/src/lib/transferBuilders/index.js +20 -0
  56. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
  57. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  58. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
  59. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +16 -0
  60. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  61. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +81 -0
  62. package/dist/src/lib/types.d.ts +39 -0
  63. package/dist/src/lib/types.d.ts.map +1 -0
  64. package/dist/src/lib/types.js +137 -0
  65. package/dist/src/lib/utils.d.ts +270 -0
  66. package/dist/src/lib/utils.d.ts.map +1 -0
  67. package/dist/src/lib/utils.js +717 -0
  68. package/dist/src/lib/walletUtil.d.ts +32 -0
  69. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  70. package/dist/src/lib/walletUtil.js +35 -0
  71. package/dist/src/types.d.ts +9 -0
  72. package/dist/src/types.d.ts.map +1 -0
  73. package/dist/src/types.js +3 -0
  74. package/dist/test/index.d.ts +2 -0
  75. package/dist/test/index.d.ts.map +1 -0
  76. package/dist/test/index.js +18 -0
  77. package/dist/test/unit/coin.d.ts +8 -0
  78. package/dist/test/unit/coin.d.ts.map +1 -0
  79. package/dist/test/unit/coin.js +577 -0
  80. package/dist/test/unit/index.d.ts +6 -0
  81. package/dist/test/unit/index.d.ts.map +1 -0
  82. package/dist/test/unit/index.js +22 -0
  83. package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
  84. package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
  85. package/dist/test/unit/messages/eip191/eip191Message.js +137 -0
  86. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
  87. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  88. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +116 -0
  89. package/dist/test/unit/messages/fixtures.d.ts +24 -0
  90. package/dist/test/unit/messages/fixtures.d.ts.map +1 -0
  91. package/dist/test/unit/messages/fixtures.js +28 -0
  92. package/dist/test/unit/messages/index.d.ts +4 -0
  93. package/dist/test/unit/messages/index.d.ts.map +1 -0
  94. package/dist/test/unit/messages/index.js +20 -0
  95. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  96. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  97. package/dist/test/unit/messages/messageBuilderFactory.js +44 -0
  98. package/dist/test/unit/token.d.ts +2 -0
  99. package/dist/test/unit/token.d.ts.map +1 -0
  100. package/dist/test/unit/token.js +37 -0
  101. package/dist/test/unit/transaction.d.ts +3 -0
  102. package/dist/test/unit/transaction.d.ts.map +1 -0
  103. package/dist/test/unit/transaction.js +60 -0
  104. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
  105. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  106. package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
  107. package/dist/test/unit/transactionBuilder/index.d.ts +4 -0
  108. package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
  109. package/dist/test/unit/transactionBuilder/index.js +20 -0
  110. package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
  111. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  112. package/dist/test/unit/transactionBuilder/send.js +197 -0
  113. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +10 -0
  114. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  115. package/dist/test/unit/transactionBuilder/walletInitialization.js +124 -0
  116. package/dist/test/unit/transferBuilder.d.ts +2 -0
  117. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  118. package/dist/test/unit/transferBuilder.js +76 -0
  119. package/dist/tsconfig.tsbuildinfo +1 -8240
  120. package/index.ts +2 -0
  121. package/package.json +30 -9
@@ -0,0 +1,6 @@
1
+ export * from './transactionBuilder';
2
+ export * from './token';
3
+ export * from './transaction';
4
+ export * from './coin';
5
+ export * from './messages';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/unit/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,22 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transactionBuilder"), exports);
18
+ __exportStar(require("./token"), exports);
19
+ __exportStar(require("./transaction"), exports);
20
+ __exportStar(require("./coin"), exports);
21
+ __exportStar(require("./messages"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFxQztBQUNyQywwQ0FBd0I7QUFDeEIsZ0RBQThCO0FBQzlCLHlDQUF1QjtBQUN2Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3Rva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb2luJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMnO1xuIl19
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=eip191Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip191Message.d.ts","sourceRoot":"","sources":["../../../../../test/unit/messages/eip191/eip191Message.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,137 @@
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
+ require("should");
7
+ const sinon_1 = __importDefault(require("sinon"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const fixtures_1 = require("../fixtures");
10
+ const src_1 = require("../../../../src");
11
+ describe('EIP191 Message', () => {
12
+ const sandbox = sinon_1.default.createSandbox();
13
+ afterEach(() => {
14
+ sandbox.restore();
15
+ });
16
+ it('should initialize with the correct type', () => {
17
+ const message = new src_1.EIP191Message({
18
+ coinConfig: fixtures_1.fixtures.coin,
19
+ payload: fixtures_1.fixtures.messages.validMessage,
20
+ });
21
+ message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
22
+ });
23
+ it('should generate the correct signable payload with Ethereum prefix', async () => {
24
+ const message = new src_1.EIP191Message({
25
+ coinConfig: fixtures_1.fixtures.coin,
26
+ payload: fixtures_1.fixtures.messages.validMessage,
27
+ });
28
+ const signablePayload = await message.getSignablePayload();
29
+ // Message is prefixed with "\u0019Ethereum Signed Message:\n<length><message>"
30
+ const expectedPrefix = `\u0019Ethereum Signed Message:\n${fixtures_1.fixtures.messages.validMessage.length}`;
31
+ const expectedPayload = Buffer.from(expectedPrefix.concat(fixtures_1.fixtures.messages.validMessage)).toString('hex');
32
+ signablePayload.should.equal(expectedPayload);
33
+ });
34
+ it('should handle empty messages correctly', async () => {
35
+ const message = new src_1.EIP191Message({
36
+ coinConfig: fixtures_1.fixtures.coin,
37
+ payload: fixtures_1.fixtures.messages.emptyMessage,
38
+ });
39
+ const signablePayload = await message.getSignablePayload();
40
+ // Empty message has length 0
41
+ const expectedPrefix = `\u0019Ethereum Signed Message:\n0`;
42
+ const expectedPayload = Buffer.from(expectedPrefix.concat('')).toString('hex');
43
+ signablePayload.should.equal(expectedPayload);
44
+ });
45
+ it('should handle messages with special characters', async () => {
46
+ const message = new src_1.EIP191Message({
47
+ coinConfig: fixtures_1.fixtures.coin,
48
+ payload: fixtures_1.fixtures.messages.specialCharsMessage,
49
+ });
50
+ const signablePayload = await message.getSignablePayload();
51
+ const expectedPrefix = `\u0019Ethereum Signed Message:\n${fixtures_1.fixtures.messages.specialCharsMessage.length}`;
52
+ const expectedPayload = Buffer.from(expectedPrefix.concat(fixtures_1.fixtures.messages.specialCharsMessage)).toString('hex');
53
+ signablePayload.should.equal(expectedPayload);
54
+ });
55
+ it('should maintain signatures and signers correctly', () => {
56
+ const message = new src_1.EIP191Message({
57
+ coinConfig: fixtures_1.fixtures.coin,
58
+ payload: fixtures_1.fixtures.messages.validMessage,
59
+ signatures: [fixtures_1.fixtures.eip191.signature],
60
+ signers: [fixtures_1.fixtures.eip191.signer],
61
+ });
62
+ message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
63
+ message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
64
+ // Test adding new ones
65
+ message.addSignature({
66
+ publicKey: { pub: 'pub1' },
67
+ signature: Buffer.from('new-signature'),
68
+ });
69
+ message.addSigner('new-signer');
70
+ message.getSignatures().should.containEql({
71
+ publicKey: { pub: 'pub1' },
72
+ signature: Buffer.from('new-signature'),
73
+ });
74
+ message.getSigners().should.containEql('new-signer');
75
+ // Test replacing all
76
+ message.setSignatures([
77
+ {
78
+ publicKey: { pub: 'pub2' },
79
+ signature: Buffer.from('replaced-signature'),
80
+ },
81
+ ]);
82
+ message.setSigners(['replaced-signer']);
83
+ message.getSignatures().should.deepEqual([
84
+ {
85
+ publicKey: { pub: 'pub2' },
86
+ signature: Buffer.from('replaced-signature'),
87
+ },
88
+ ]);
89
+ message.getSigners().should.deepEqual(['replaced-signer']);
90
+ });
91
+ it('should store and retrieve metadata correctly', () => {
92
+ const message = new src_1.EIP191Message({
93
+ coinConfig: fixtures_1.fixtures.coin,
94
+ payload: fixtures_1.fixtures.messages.validMessage,
95
+ metadata: fixtures_1.fixtures.eip191.metadata,
96
+ });
97
+ message.getMetadata().should.deepEqual(fixtures_1.fixtures.eip191.metadata);
98
+ });
99
+ describe('Broadcast Format', () => {
100
+ it('should convert to broadcast format correctly', async () => {
101
+ const message = new src_1.EIP191Message({
102
+ coinConfig: fixtures_1.fixtures.coin,
103
+ payload: fixtures_1.fixtures.messages.validMessage,
104
+ signatures: [fixtures_1.fixtures.eip191.signature],
105
+ signers: [fixtures_1.fixtures.eip191.signer],
106
+ metadata: fixtures_1.fixtures.eip191.metadata,
107
+ });
108
+ const broadcastFormat = await message.toBroadcastFormat();
109
+ const expectedSerializedSignatures = (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]);
110
+ broadcastFormat.type.should.equal(sdk_core_1.MessageStandardType.EIP191);
111
+ broadcastFormat.payload.should.equal(fixtures_1.fixtures.messages.validMessage);
112
+ broadcastFormat.serializedSignatures?.should.deepEqual(expectedSerializedSignatures);
113
+ broadcastFormat.signers?.should.deepEqual([fixtures_1.fixtures.eip191.signer]);
114
+ broadcastFormat.metadata.should.deepEqual(fixtures_1.fixtures.eip191.metadata);
115
+ broadcastFormat.signablePayload.should.equal('MTk0NTc0Njg2NTcyNjU3NTZkMjA1MzY5Njc2ZTY1NjQyMDRkNjU3MzczNjE2NzY1M2EwYTMxMzM0ODY1NmM2YzZmMmMyMDc3NmY3MjZjNjQyMQ==');
116
+ });
117
+ it('should convert to broadcast string correctly', async () => {
118
+ const message = new src_1.EIP191Message({
119
+ coinConfig: fixtures_1.fixtures.coin,
120
+ payload: fixtures_1.fixtures.messages.validMessage,
121
+ signatures: [fixtures_1.fixtures.eip191.signature],
122
+ signers: [fixtures_1.fixtures.eip191.signer],
123
+ metadata: fixtures_1.fixtures.eip191.metadata,
124
+ });
125
+ const broadcastHex = await message.toBroadcastString();
126
+ const broadcastString = Buffer.from(broadcastHex, 'hex').toString();
127
+ const parsedBroadcast = JSON.parse(broadcastString);
128
+ const expectedSerializedSignatures = (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]);
129
+ parsedBroadcast.type.should.equal(sdk_core_1.MessageStandardType.EIP191);
130
+ parsedBroadcast.payload.should.equal(fixtures_1.fixtures.messages.validMessage);
131
+ parsedBroadcast.serializedSignatures.should.deepEqual(expectedSerializedSignatures);
132
+ parsedBroadcast.signers.should.deepEqual([fixtures_1.fixtures.eip191.signer]);
133
+ parsedBroadcast.metadata.should.deepEqual(fixtures_1.fixtures.eip191.metadata);
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9tZXNzYWdlcy9laXAxOTEvZWlwMTkxTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtCQUFnQjtBQUNoQixrREFBMEI7QUFDMUIsbURBQWdGO0FBQ2hGLDBDQUF1QztBQUN2Qyx5Q0FBZ0Q7QUFFaEQsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFFdEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBYSxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxtQkFBUSxDQUFDLElBQUk7WUFDekIsT0FBTyxFQUFFLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBYSxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxtQkFBUSxDQUFDLElBQUk7WUFDekIsT0FBTyxFQUFFLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzRCwrRUFBK0U7UUFDL0UsTUFBTSxjQUFjLEdBQUcsbUNB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QUMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDcEYsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNuRSxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IE1lc3NhZ2VTdGFuZGFyZFR5cGUsIHNlcmlhbGl6ZVNpZ25hdHVyZXMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBmaXh0dXJlcyB9IGZyb20gJy4uL2ZpeHR1cmVzJztcbmltcG9ydCB7IEVJUDE5MU1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnRUlQMTkxIE1lc3NhZ2UnLCAoKSA9PiB7XG4gIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHdpdGggdGhlIGNvcnJlY3QgdHlwZScsICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0VHlwZSgpLnNob3VsZC5lcXVhbChNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgc2lnbmFibGUgcGF5bG9hZCB3aXRoIEV0aGVyZXVtIHByZWZpeCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgLy8gTWVzc2FnZSBpcyBwcmVmaXhlZCB3aXRoIFwiXFx1MDAxOUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxcbjxsZW5ndGg+PG1lc3NhZ2U+XCJcbiAgICBjb25zdCBleHBlY3RlZFByZWZpeCA9IGBcXHUwMDE5RXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6XFxuJHtmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UubGVuZ3RofWA7XG4gICAgY29uc3QgZXhwZWN0ZWRQYXlsb2FkID0gQnVmZmVyLmZyb20oZXhwZWN0ZWRQcmVmaXguY29uY2F0KGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSkpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHNpZ25hYmxlUGF5bG9hZC5zaG91bGQuZXF1YWwoZXhwZWN0ZWRQYXlsb2FkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgbWVzc2FnZXMgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMuZW1wdHlNZXNzYWdlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2lnbmFibGVQYXlsb2FkID0gYXdhaXQgbWVzc2FnZS5nZXRTaWduYWJsZVBheWxvYWQoKTtcbiAgICAvLyBFbXB0eSBtZXNzYWdlIGhhcyBsZW5ndGggMFxuICAgIGNvbnN0IGV4cGVjdGVkUHJlZml4ID0gYFxcdTAwMTlFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTpcXG4wYDtcbiAgICBjb25zdCBleHBlY3RlZFBheWxvYWQgPSBCdWZmZXIuZnJvbShleHBlY3RlZFByZWZpeC5jb25jYXQoJycpKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBzaWduYWJsZVBheWxvYWQuc2hvdWxkLmVxdWFsKGV4cGVjdGVkUGF5bG9hZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG1lc3NhZ2VzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBgXFx1MDAxOUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxcbiR7Zml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZS5sZW5ndGh9YDtcbiAgICBjb25zdCBleHBlY3RlZFBheWxvYWQgPSBCdWZmZXIuZnJvbShleHBlY3RlZFByZWZpeC5jb25jYXQoZml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZSkpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHNpZ25hYmxlUGF5bG9hZC5zaG91bGQuZXF1YWwoZXhwZWN0ZWRQYXlsb2FkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBtYWludGFpbiBzaWduYXR1cmVzIGFuZCBzaWduZXJzIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICAgIHNpZ25hdHVyZXM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSxcbiAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmUpO1xuICAgIG1lc3NhZ2UuZ2V0U2lnbmVycygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduZXIpO1xuXG4gICAgLy8gVGVzdCBhZGRpbmcgbmV3IG9uZXNcbiAgICBtZXNzYWdlLmFkZFNpZ25hdHVyZSh7XG4gICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViMScgfSxcbiAgICAgIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oJ25ldy1zaWduYXR1cmUnKSxcbiAgICB9KTtcbiAgICBtZXNzYWdlLmFkZFNpZ25lcignbmV3LXNpZ25lcicpO1xuXG4gICAgbWVzc2FnZS5nZXRTaWduYXR1cmVzKCkuc2hvdWxkLmNvbnRhaW5FcWwoe1xuICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YjEnIH0sXG4gICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCduZXctc2lnbmF0dXJlJyksXG4gICAgfSk7XG4gICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmNvbnRhaW5FcWwoJ25ldy1zaWduZXInKTtcblxuICAgIC8vIFRlc3QgcmVwbGFjaW5nIGFsbFxuICAgIG1lc3NhZ2Uuc2V0U2lnbmF0dXJlcyhbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIyJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdyZXBsYWNlZC1zaWduYXR1cmUnKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgbWVzc2FnZS5zZXRTaWduZXJzKFsncmVwbGFjZWQtc2lnbmVyJ10pO1xuXG4gICAgbWVzc2FnZS5nZXRTaWduYXR1cmVzKCkuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIyJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdyZXBsYWNlZC1zaWduYXR1cmUnKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmRlZXBFcXVhbChbJ3JlcGxhY2VkLXNpZ25lciddKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0TWV0YWRhdGEoKSEuc2hvdWxkLmRlZXBFcXVhbChmaXh0dXJlcy5laXAxOTEubWV0YWRhdGEpO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnJvYWRjYXN0IEZvcm1hdCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgdG8gYnJvYWRjYXN0IGZvcm1hdCBjb3JyZWN0bHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSxcbiAgICAgICAgc2lnbmVyczogW2ZpeHR1cmVzLmVpcDE5MS5zaWduZXJdLFxuICAgICAgICBtZXRhZGF0YTogZml4dHVyZXMuZWlwMTkxLm1ldGFkYXRhLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGJyb2FkY2FzdEZvcm1hdCA9IGF3YWl0IG1lc3NhZ2UudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyA9IHNlcmlhbGl6ZVNpZ25hdHVyZXMoW2ZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmVdKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC50eXBlLnNob3VsZC5lcXVhbChNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gICAgICBicm9hZGNhc3RGb3JtYXQucGF5bG9hZC5zaG91bGQuZXF1YWwoZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zZXJpYWxpemVkU2lnbmF0dXJlcz8uc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZFNlcmlhbGl6ZWRTaWduYXR1cmVzKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zaWduZXJzPy5zaG91bGQuZGVlcEVxdWFsKFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSk7XG4gICAgICBicm9hZGNhc3RGb3JtYXQubWV0YWRhdGEhLnNob3VsZC5kZWVwRXF1YWwoZml4dHVyZXMuZWlwMTkxLm1ldGFkYXRhKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zaWduYWJsZVBheWxvYWQhLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ01UazBOVGMwTmpnMk5UY3lOalUzTlRaa01qQTFNelk1TmpjMlpUWTFOalF5TURSa05qVTNNemN6TmpFMk56WTFNMkV3WVRNeE16TTBPRFkxTm1NMll6Wm1NbU15TURjM05tWTNNalpqTmpReU1RPT0nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHRvIGJyb2FkY2FzdCBzdHJpbmcgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBFSVAxOTFNZXNzYWdlKHtcbiAgICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlLFxuICAgICAgICBzaWduYXR1cmVzOiBbZml4dHVyZXMuZWlwMTkxLnNpZ25hdHVyZV0sXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RIZXggPSBhd2FpdCBtZXNzYWdlLnRvQnJvYWRjYXN0U3RyaW5nKCk7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBCdWZmZXIuZnJvbShicm9hZGNhc3RIZXgsICdoZXgnKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgcGFyc2VkQnJvYWRjYXN0ID0gSlNPTi5wYXJzZShicm9hZGNhc3RTdHJpbmcpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyA9IHNlcmlhbGl6ZVNpZ25hdHVyZXMoW2ZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmVdKTtcblxuICAgICAgcGFyc2VkQnJvYWRjYXN0LnR5cGUuc2hvdWxkLmVxdWFsKE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICAgIHBhcnNlZEJyb2FkY2FzdC5wYXlsb2FkLnNob3VsZC5lcXVhbChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpO1xuICAgICAgcGFyc2VkQnJvYWRjYXN0LnNlcmlhbGl6ZWRTaWduYXR1cmVzLnNob3VsZC5kZWVwRXF1YWwoZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyk7XG4gICAgICBwYXJzZWRCcm9hZGNhc3Quc2lnbmVycy5zaG91bGQuZGVlcEVxdWFsKFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSk7XG4gICAgICBwYXJzZWRCcm9hZGNhc3QubWV0YWRhdGEuc2hvdWxkLmRlZXBFcXVhbChmaXh0dXJlcy5laXAxOTEubWV0YWRhdGEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=eip191MessageBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip191MessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/messages/eip191/eip191MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,116 @@
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
+ require("should");
7
+ const sinon_1 = __importDefault(require("sinon"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const fixtures_1 = require("../fixtures");
10
+ const src_1 = require("../../../../src");
11
+ describe('EIP191 Message Builder', () => {
12
+ const sandbox = sinon_1.default.createSandbox();
13
+ afterEach(() => {
14
+ sandbox.restore();
15
+ });
16
+ describe('constructor', () => {
17
+ it('should initialize with the correct message type', () => {
18
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
19
+ // Test the builder's private property indirectly through build()
20
+ builder.should.be.instanceof(src_1.Eip191MessageBuilder);
21
+ });
22
+ });
23
+ describe('build method', () => {
24
+ it('should build a valid EIP191 message', async () => {
25
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
26
+ builder.setPayload(fixtures_1.fixtures.messages.validMessage).setMetadata({ customData: 'test data' });
27
+ const message = await builder.build();
28
+ message.should.be.instanceof(src_1.EIP191Message);
29
+ message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
30
+ message.getPayload().should.equal(fixtures_1.fixtures.messages.validMessage);
31
+ message.getMetadata().should.have.property('customData', 'test data');
32
+ message.getMetadata().should.have.property('encoding', 'utf8');
33
+ });
34
+ it('should throw an error when building without setting payload', async () => {
35
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
36
+ await builder.build().should.be.rejectedWith('Message payload must be set before building the message');
37
+ });
38
+ it('should include signers when building a message', async () => {
39
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
40
+ builder.setPayload(fixtures_1.fixtures.messages.validMessage);
41
+ builder.addSigner(fixtures_1.fixtures.eip191.signer);
42
+ const message = await builder.build();
43
+ message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
44
+ });
45
+ it('should include signatures when building a message', async () => {
46
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
47
+ builder.setPayload(fixtures_1.fixtures.messages.validMessage);
48
+ builder.addSignature(fixtures_1.fixtures.eip191.signature);
49
+ const message = await builder.build();
50
+ message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
51
+ });
52
+ it('should override metadata.encoding with utf8', async () => {
53
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
54
+ builder.setPayload(fixtures_1.fixtures.messages.validMessage);
55
+ builder.setMetadata({ encoding: 'hex', customData: 'test data' });
56
+ const message = await builder.build();
57
+ message.getMetadata().should.have.property('encoding', 'utf8');
58
+ message.getMetadata().should.have.property('customData', 'test data');
59
+ });
60
+ });
61
+ describe('fromBroadcastFormat method', () => {
62
+ it('should reconstruct a message from broadcast format', async () => {
63
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
64
+ const broadcastMessage = {
65
+ type: sdk_core_1.MessageStandardType.EIP191,
66
+ payload: fixtures_1.fixtures.messages.validMessage,
67
+ serializedSignatures: (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]),
68
+ signers: [fixtures_1.fixtures.eip191.signer],
69
+ metadata: fixtures_1.fixtures.eip191.metadata,
70
+ };
71
+ const message = await builder.fromBroadcastFormat(broadcastMessage);
72
+ message.should.be.instanceof(src_1.EIP191Message);
73
+ message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
74
+ message.getPayload().should.equal(fixtures_1.fixtures.messages.validMessage);
75
+ message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
76
+ message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
77
+ message.getMetadata().should.have.property('encoding', 'utf8');
78
+ message.getMetadata().should.have.property('customData', 'test data');
79
+ });
80
+ it('should throw an error for incorrect message type', async () => {
81
+ const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
82
+ const broadcastMessage = {
83
+ type: sdk_core_1.MessageStandardType.UNKNOWN,
84
+ payload: fixtures_1.fixtures.messages.validMessage,
85
+ serializedSignatures: (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]),
86
+ signers: [fixtures_1.fixtures.eip191.signer],
87
+ metadata: {},
88
+ };
89
+ await builder
90
+ .fromBroadcastFormat(broadcastMessage)
91
+ .should.be.rejectedWith(`Invalid message type, expected ${sdk_core_1.MessageStandardType.EIP191}`);
92
+ });
93
+ });
94
+ describe('fromBroadcastString', function () {
95
+ it('should parse broadcastable string and return correct builder type', async function () {
96
+ const broadcastHex = '7b2274797065223a22454950313931222c227061796c6f6164223a2253544152203130303020746f20616464725f746573743171727139366830726a68743275366e336667776d7939307837676d6c38686475657774326e6d72327536636d6b707771743477373839776b346534387a6a73616b673237647533683730776d656a756b34386b783465343368767a737566736876362033316136626162353061383462383433396164636662373836626232303230663638303765366538666461363239623432343131306663376262316336623862222c2273657269616c697a65645369676e617475726573223a5b7b227075626c69634b6579223a22222c227369676e6174757265223a2274386c6e725a4b7a757264566c777343355a66422f4b314b5533516d4b5a3970343671576a3155795744307046464577584e6d754f327a4845644e3164372b2b414e5653796f5a3869547737375073546462334b3878773d227d5d2c227369676e657273223a5b22307866613061376634613064396535343463353761656361346533326233623130343862363333636466225d2c226d65746164617461223a7b22656e636f64696e67223a2275746638227d2c227369676e61626c655061796c6f6164223a224d546b304e5463304e6a67324e5463794e6a55334e545a6b4d6a41314d7a59354e6a63325a5459314e6a51794d44526b4e6a55334d7a637a4e6a45324e7a59314d32457759544d784d7a677a4e6a557a4e5451304d5455794d6a417a4d544d774d7a417a4d4449774e7a51325a6a49774e6a45324e4459304e7a49315a6a63304e6a55334d7a63304d7a45334d5463794e7a457a4f544d324e6a677a4d4463794e6d45324f4463304d7a49334e544d324e6d557a4d7a59324e6a63334e7a5a6b4e7a6b7a4f544d774e7a677a4e7a59334e6d5132597a4d344e6a67324e4463314e6a55334e7a63304d7a49325a545a6b4e7a497a4d6a63314d7a59324d7a5a6b4e6d49334d4463334e7a45334e444d304e7a637a4e7a4d344d7a6b334e7a5a694d7a51324e544d304d7a673359545a684e7a4d324d545a694e6a637a4d6a4d334e6a51334e544d7a4e6a677a4e7a4d774e7a63325a4459314e6d45334e545a694d7a517a4f445a694e7a677a4e4459314d7a517a4d7a59344e7a59335954637a4e7a55324e6a637a4e6a67334e6a4d324d6a417a4d7a4d784e6a457a4e6a59794e6a45324d6a4d314d7a41324d544d344d7a51324d6a4d344d7a517a4d7a4d354e6a45324e44597a4e6a59324d6a4d334d7a677a4e6a59794e6a497a4d6a4d774d7a497a4d4459324d7a597a4f444d774d7a63324e544d324e6a557a4f4459324e6a51324d544d324d7a497a4f5459794d7a517a4d6a4d304d7a457a4d544d774e6a59324d7a4d334e6a49324d6a4d784e6a4d7a4e6a59794d7a67324d673d3d227d';
97
+ const coinConfig = { name: 'eth' };
98
+ const factory = new src_1.MessageBuilderFactory(coinConfig);
99
+ const builder = factory.fromBroadcastString(broadcastHex);
100
+ const message = await builder.build();
101
+ const payload = message.getPayload();
102
+ const payloadParts = payload.split(' ');
103
+ const address = message.getSigners()[0];
104
+ address.should.equal('0xfa0a7f4a0d9e544c57aeca4e32b3b1048b633cdf');
105
+ const destinationAddress = payloadParts[3];
106
+ destinationAddress.should.equal('addr_test1qrq96h0rjht2u6n3fgwmy90x7gml8hduewt2nmr2u6cmkpwqt4w789wk4e48zjsakg27du3h70wmejuk48kx4e43hvzsufshv6');
107
+ const amount = Number(payloadParts[1]);
108
+ amount.should.equal(1000);
109
+ const signature = message.getSignatures()[0].signature.toString('hex');
110
+ signature.should.equal('b7c967ad92b3bab755970b02e597c1fcad4a537426299f69e3aa968f5532583d291451305cd9ae3b6cc711d37577bfbe00d552ca867c893c3becfb1375bdcaf31c');
111
+ const publicKeyHex = message.getSignatures()[0].publicKey.pub;
112
+ publicKeyHex.should.equal('');
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZWlwMTkxL2VpcDE5MU1lc3NhZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLGtEQUEwQjtBQUMxQixtREFBc0c7QUFDdEcsMENBQXVDO0FBQ3ZDLHlDQUE2RjtBQUc3RixRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUV0QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFvQixDQUFDLG1CQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsaUVBQWlFO1lBQ2pFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQywwQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxtQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhELE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFF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T0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDOUQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEJyb2FkY2FzdGFibGVNZXNzYWdlLCBNZXNzYWdlU3RhbmRhcmRUeXBlLCBzZXJpYWxpemVTaWduYXR1cmVzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZml4dHVyZXMgfSBmcm9tICcuLi9maXh0dXJlcyc7XG5pbXBvcnQgeyBFSVAxOTFNZXNzYWdlLCBFaXAxOTFNZXNzYWdlQnVpbGRlciwgTWVzc2FnZUJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmRlc2NyaWJlKCdFSVAxOTEgTWVzc2FnZSBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25zdHJ1Y3RvcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgd2l0aCB0aGUgY29ycmVjdCBtZXNzYWdlIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuICAgICAgLy8gVGVzdCB0aGUgYnVpbGRlcidzIHByaXZhdGUgcHJvcGVydHkgaW5kaXJlY3RseSB0aHJvdWdoIGJ1aWxkKClcbiAgICAgIGJ1aWxkZXIuc2hvdWxkLmJlLmluc3RhbmNlb2YoRWlwMTkxTWVzc2FnZUJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2YWxpZCBFSVAxOTEgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRWlwMTkxTWVzc2FnZUJ1aWxkZXIoZml4dHVyZXMuY29pbik7XG5cbiAgICAgIGJ1aWxkZXIuc2V0UGF5bG9hZChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpLnNldE1ldGFkYXRhKHsgY3VzdG9tRGF0YTogJ3Rlc3QgZGF0YScgfSk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIG1lc3NhZ2Uuc2hvdWxkLmJlLmluc3RhbmNlb2YoRUlQMTkxTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFR5cGUoKS5zaG91bGQuZXF1YWwoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgICAgbWVzc2FnZS5nZXRQYXlsb2FkKCkuc2hvdWxkLmVxdWFsKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjdXN0b21EYXRhJywgJ3Rlc3QgZGF0YScpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jb2RpbmcnLCAndXRmOCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgc2V0dGluZyBwYXlsb2FkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ01lc3NhZ2UgcGF5bG9hZCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIG1lc3NhZ2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBzaWduZXJzIHdoZW4gYnVpbGRpbmcgYSBtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgYnVpbGRlci5zZXRQYXlsb2FkKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25lcihmaXh0dXJlcy5laXAxOTEuc2lnbmVyKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmNvbnRhaW5FcWwoZml4dHVyZXMuZWlwMTkxLnNpZ25lcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgc2lnbmF0dXJlcyB3aGVuIGJ1aWxkaW5nIGEgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRWlwMTkxTWVzc2FnZUJ1aWxkZXIoZml4dHVyZXMuY29pbik7XG5cbiAgICAgIGJ1aWxkZXIuc2V0UGF5bG9hZChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoZml4dHVyZXMuZWlwMTkxLnNpZ25hdHVyZSk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBvdmVycmlkZSBtZXRhZGF0YS5lbmNvZGluZyB3aXRoIHV0ZjgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuXG4gICAgICBidWlsZGVyLnNldFBheWxvYWQoZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlKTtcbiAgICAgIGJ1aWxkZXIuc2V0TWV0YWRhdGEoeyBlbmNvZGluZzogJ2hleCcsIGN1c3RvbURhdGE6ICd0ZXN0IGRhdGEnIH0pO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNvZGluZycsICd1dGY4Jyk7XG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjdXN0b21EYXRhJywgJ3Rlc3QgZGF0YScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbUJyb2FkY2FzdEZvcm1hdCBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWNvbnN0cnVjdCBhIG1lc3NhZ2UgZnJvbSBicm9hZGNhc3QgZm9ybWF0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0TWVzc2FnZTogQnJvYWRjYXN0YWJsZU1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSksXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmZyb21Ccm9hZGNhc3RGb3JtYXQoYnJvYWRjYXN0TWVzc2FnZSk7XG5cbiAgICAgIG1lc3NhZ2Uuc2hvdWxkLmJlLmluc3RhbmNlb2YoRUlQMTkxTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFR5cGUoKS5zaG91bGQuZXF1YWwoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgICAgbWVzc2FnZS5nZXRQYXlsb2FkKCkuc2hvdWxkLmVxdWFsKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFNpZ25hdHVyZXMoKS5zaG91bGQuY29udGFpbkVxbChmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlKTtcbiAgICAgIG1lc3NhZ2UuZ2V0U2lnbmVycygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduZXIpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jb2RpbmcnLCAndXRmOCcpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY3VzdG9tRGF0YScsICd0ZXN0IGRhdGEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgZm9yIGluY29ycmVjdCBtZXNzYWdlIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RNZXNzYWdlOiBCcm9hZGNhc3RhYmxlTWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5VTktOT1dOLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSksXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYnVpbGRlclxuICAgICAgICAuZnJvbUJyb2FkY2FzdEZvcm1hdChicm9hZGNhc3RNZXNzYWdlKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChgSW52YWxpZCBtZXNzYWdlIHR5cGUsIGV4cGVjdGVkICR7TWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTF9YCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcm9tQnJvYWRjYXN0U3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgYnJvYWRjYXN0YWJsZSBzdHJpbmcgYW5kIHJldHVybiBjb3JyZWN0IGJ1aWxkZXIgdHlwZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJyb2FkY2FzdEhleCA9XG4gICAgICAgICc3YjIyNzQ3OTcwNjUyMjNhMjI0NTQ5NTAzMTM5MzEyMjJjMjI3MDYxNzk2YzZmNjE2NDIyM2EyMjUzNTQ0MTUyMjAzMTMwMzAzMDIwNzQ2ZjIwNjE2NDY0NzI1Zjc0NjU3Mzc0MzE3MTcyNzEzOTM2NjgzMDcyNmE2ODc0MzI3NTM2NmUzMzY2Njc3NzZkNzkzOTMwNzgzNzY3NmQ2YzM4Njg2NDc1NjU3Nzc0MzI2ZTZkNzIzMjc1MzY2MzZkNmI3MDc3NzE3NDM0NzczNzM4Mzk3NzZiMzQ2NTM0Mzg3YTZhNzM2MTZiNjczMjM3NjQ3NTMzNjgzNzMwNzc2ZDY1NmE3NTZiMzQzODZiNzgzNDY1MzQzMzY4NzY3YTczNzU2NjczNjg3NjM2MjAzMzMxNjEzNjYyNjE2MjM1MzA2MTM4MzQ2MjM4MzQzMzM5NjE2NDYzNjY2MjM3MzgzNjYyNjIzMjMwMzIzMDY2MzYzODMwMzc2NTM2NjUzODY2NjQ2MTM2MzIzOTYyMzQzMjM0MzEzMTMwNjY2MzM3NjI2MjMxNjMzNjYyMzg2MjIyMmMyMjczNjU3MjY5NjE2YzY5N2E2NTY0NTM2OTY3NmU2MTc0NzU3MjY1NzMyMjNhNWI3YjIyNzA3NTYyNmM2OTYzNGI2NTc5MjIzYTIyMjIyYzIyNzM2OTY3NmU2MTc0NzU3MjY1MjIzYTIyNzQzODZjNmU3MjVhNGI3YTc1NzI2NDU2NmM3NzczNDMzNTVhNjY0MjJmNGIzMTRiNTUzMzUxNmQ0YjVhMzk3MDM0MzY3MTU3NmEzMTU1Nzk1NzQ0MzA3MDQ2NDY0NTc3NTg0ZTZkNzU0ZjMyN2E0ODQ1NjQ0ZTMxNjQzNzJiMmI0MTRlNTY1Mzc5NmY1YTM4Njk1NDc3MzczNzUwNzM1NDY0NjIzMzRiMzg3ODc3M2QyMjdkNWQyYzIyNzM2OTY3NmU2NTcyNzMyMjNhNWIyMjMwNzg2NjYxMzA2MTM3NjYzNDYxMzA2NDM5NjUzNTM0MzQ2MzM1Mzc2MTY1NjM2MTM0NjUzMzMyNjIzMzYyMzEzMDM0Mzg2MjM2MzMzMzYzNjQ2NjIyNWQyYzIyNmQ2NTc0NjE2NDYxNzQ2MTIyM2E3YjIyNjU2ZTYzNmY2NDY5NmU2NzIyM2EyMjc1NzQ2NjM4MjI3ZDJjMjI3MzY5Njc2ZTYxNjI2YzY1NTA2MTc5NmM2ZjYxNjQyMjNhMjI0ZDU0NmIzMDRlNTQ2MzMwNGU2YTY3MzI0ZTU0NjM3OTRlNmE1NTMzNGU1NDVhNmI0ZDZhNDEzMTRkN2E1OTM1NGU2YTYzMzI1YTU0NTkzMTRlNmE1MTc5NGQ0NDUyNmI0ZTZhNTUzMzRkN2E2MzdhNGU2YTQ1MzI0ZTdhNTkzMTRkMzI0NTc3NTk1NDRkNzg0ZDdhNjc3YTRlNmE1NTdhNGU1NDUxMzA0ZDU0NTU3OTRkNmE0MTdhNGQ1NDRkNzc0ZDdhNDE3YTRkNDQ0OTc3NGU3YTUxMzI1YTZhNDk3NzRlNmE0NTMyNGU0NDU5MzA0ZTdhNDkzMTVhNmE2MzMwNGU2YTU1MzM0ZDdhNjMzMDRkN2E0NTMzNGQ1NDYzNzk0ZTdhNDU3YTRmNTQ0ZDMyNGU2YTY3N2E0ZDQ0NjM3OTRlNmQ0NTMyNGY0NDYzMzA0ZDdhNDkzMzRlNTQ0ZDMyNGU2ZDU1N2E0ZDdhNTkzMjRlNmE2MzMzNGU3YTVhNmI0ZTdhNmI3YTRmNTQ0ZDc3NGU3YTY3N2E0ZTdhNTkzMzRlNmQ1MTMyNTk3YTRkMzQ0ZTZhNjczMjRlNDQ2MzMxNGU2YTU1MzM0ZTdhNjMzMDRkN2E0OTMyNWE1NDVhNmI0ZTdhNDk3YTRkNmE2MzMxNGQ3YTU5MzI0ZDdhNWE2YjRlNmQ0OTMzNGQ0NDYzMzM0ZTdhNDUzMzRlNDQ0ZDMwNGU3YTYzN2E0ZTdhNGQzNDRkN2E2YjMzNGU3YTVhNjk0ZDdhNTEzMjRlNTQ0ZDMwNGQ3YTY3MzM1OTU0NWE2ODRlN2E0ZDMyNGQ1NDVhNjk0ZTZhNjM3YTRkNmE0ZDMzNGU2YTUxMzM0ZTU0NGQ3YTRlNmE2NzdhNGU3YTRkNzc0ZTdhNjMzMjVhNDQ1OTMxNGU2ZDQ1MzM0ZTU0NWE2OTRkN2E1MTdhNGY0NDVhNjk0ZTdhNjc3YTRlNDQ1OTMxNGQ3YTUxN2E0ZDdhNTkzNDRlN2E1OTMzNTk1NDYzN2E0ZTdhNTUzMjRlNmE2MzdhNGU2YTY3MzM0ZTZhNGQzMjRkNmE0MTdhNGQ3YTRkNzg0ZTZhNDU3YTRlNmE1OTc5NGU2YTQ1MzI0ZDZhNGQzMTRkN2E0MTMyNGQ1NDRkMzQ0ZDdhNTEzMjRkNmE0ZDM0NGQ3YTUxN2E0ZDdhNGQzNTRlNmE0NTMyNGU0NDU5N2E0ZTZhNTkzMjRkNmE0ZDMzNGQ3YTY3N2E0ZTZhNTk3OTRlNmE0OTdhNGQ2YTRkNzc0ZDdhNDk3YTRkNDQ1OTMyNGQ3YTU5N2E0ZjQ0NGQ3NzRkN2E2MzMyNGU1NDRkMzI0ZTZhNTU3YTRmNDQ1OTMyNGU2YTUxMzI0ZDU0NGQzMjRkN2E0OTdhNGY1NDU5Nzk0ZDdhNTE3YTRkNmE0ZDMwNGQ3YTQ1N2E0ZDU0NGQ3NzRlNmE1OTMyNGQ3YTRkMzM0ZTZhNDkzMjRkNmE0ZDc4NGU2YTRkN2E0ZTZhNTk3OTRkN2E2NzMyNGQ2NzNkM2QyMjdkJztcbiAgICAgIGNvbnN0IGNvaW5Db25maWcgPSB7IG5hbWU6ICdldGgnIH0gYXMgQmFzZUNvaW47XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb21Ccm9hZGNhc3RTdHJpbmcoYnJvYWRjYXN0SGV4KTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHBheWxvYWQgPSBtZXNzYWdlLmdldFBheWxvYWQoKTtcbiAgICAgIGNvbnN0IHBheWxvYWRQYXJ0cyA9IHBheWxvYWQuc3BsaXQoJyAnKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBtZXNzYWdlLmdldFNpZ25lcnMoKVswXTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKCcweGZhMGE3ZjRhMGQ5ZTU0NGM1N2FlY2E0ZTMyYjNiMTA0OGI2MzNjZGYnKTtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHBheWxvYWRQYXJ0c1szXTtcbiAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdhZGRyX3Rlc3QxcXJxOTZoMHJqaHQydTZuM2Znd215OTB4N2dtbDhoZHVld3Qybm1yMnU2Y21rcHdxdDR3Nzg5d2s0ZTQ4empzYWtnMjdkdTNoNzB3bWVqdWs0OGt4NGU0M2h2enN1ZnNodjYnXG4gICAgICApO1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHBheWxvYWRQYXJ0c1sxXSk7XG4gICAgICBhbW91bnQuc2hvdWxkLmVxdWFsKDEwMDApO1xuXG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBtZXNzYWdlLmdldFNpZ25hdHVyZXMoKVswXS5zaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ2I3Yzk2N2FkOTJiM2JhYjc1NTk3MGIwMmU1OTdjMWZjYWQ0YTUzNzQyNjI5OWY2OWUzYWE5NjhmNTUzMjU4M2QyOTE0NTEzMDVjZDlhZTNiNmNjNzExZDM3NTc3YmZiZTAwZDU1MmNhODY3Yzg5M2MzYmVjZmIxMzc1YmRjYWYzMWMnXG4gICAgICApO1xuICAgICAgY29uc3QgcHVibGljS2V5SGV4ID0gbWVzc2FnZS5nZXRTaWduYXR1cmVzKClbMF0ucHVibGljS2V5LnB1YjtcbiAgICAgIHB1YmxpY0tleUhleC5zaG91bGQuZXF1YWwoJycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,24 @@
1
+ export declare const fixtures: {
2
+ coin: Readonly<import("@bitgo-beta/statics").BaseCoin>;
3
+ messages: {
4
+ validMessage: string;
5
+ emptyMessage: string;
6
+ specialCharsMessage: string;
7
+ longMessage: string;
8
+ };
9
+ eip191: {
10
+ validSignablePayload: string;
11
+ signature: {
12
+ publicKey: {
13
+ pub: string;
14
+ };
15
+ signature: Buffer<ArrayBuffer>;
16
+ };
17
+ signer: string;
18
+ metadata: {
19
+ encoding: string;
20
+ customData: string;
21
+ };
22
+ };
23
+ };
24
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../test/unit/messages/fixtures.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;CAyBpB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fixtures = void 0;
4
+ const statics_1 = require("@bitgo-beta/statics");
5
+ // Test fixtures for EIP-191 message tests
6
+ exports.fixtures = {
7
+ coin: statics_1.coins.get('teth'),
8
+ messages: {
9
+ validMessage: 'Hello, world!',
10
+ emptyMessage: '',
11
+ specialCharsMessage: '!@#$%^&*()',
12
+ longMessage: 'This is a very long message that contains multiple lines and special characters. ' +
13
+ 'It is designed to test the EIP-191 message format with a more complex payload.',
14
+ },
15
+ eip191: {
16
+ validSignablePayload: '0x19457468657265756d205369676e6564204d6573736167653a0d48656c6c6f2c20776f726c6421',
17
+ signature: {
18
+ publicKey: { pub: '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf' },
19
+ signature: Buffer.from('5d99b6f7f6d1f73d1a26497f2b1c89b24c0993913f86e9a2d02cd69887d9c94f3c880358579d811b21dd1b7fd9bb01c1d81d10e69f0384e675c32b39643be8921b', 'hex'),
20
+ },
21
+ signer: '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
22
+ metadata: {
23
+ encoding: 'utf8',
24
+ customData: 'test data',
25
+ },
26
+ },
27
+ };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTRDO0FBRTVDLDBDQUEwQztBQUM3QixRQUFBLFFBQVEsR0FBRztJQUN0QixJQUFJLEVBQUUsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDdkIsUUFBUSxFQUFFO1FBQ1IsWUFBWSxFQUFFLGVBQWU7UUFDN0IsWUFBWSxFQUFFLEVBQUU7UUFDaEIsbUJBQW1CLEVBQUUsWUFBWTtRQUNqQyxXQUFXLEVBQ1QsbUZBQW1GO1lBQ25GLGdGQUFnRjtLQUNuRjtJQUNELE1BQU0sRUFBRTtRQUNOLG9CQUFvQixFQUFFLGtGQUFrRjtRQUN4RyxTQUFTLEVBQUU7WUFDVCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsNENBQTRDLEVBQUU7WUFDaEUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLG9JQUFvSSxFQUNwSSxLQUFLLENBQ047U0FDRjtRQUNELE1BQU0sRUFBRSw0Q0FBNEM7UUFDcEQsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLE1BQU07WUFDaEIsVUFBVSxFQUFFLFdBQVc7U0FDeEI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG4vLyBUZXN0IGZpeHR1cmVzIGZvciBFSVAtMTkxIG1lc3NhZ2UgdGVzdHNcbmV4cG9ydCBjb25zdCBmaXh0dXJlcyA9IHtcbiAgY29pbjogY29pbnMuZ2V0KCd0ZXRoJyksXG4gIG1lc3NhZ2VzOiB7XG4gICAgdmFsaWRNZXNzYWdlOiAnSGVsbG8sIHdvcmxkIScsXG4gICAgZW1wdHlNZXNzYWdlOiAnJyxcbiAgICBzcGVjaWFsQ2hhcnNNZXNzYWdlOiAnIUAjJCVeJiooKScsXG4gICAgbG9uZ01lc3NhZ2U6XG4gICAgICAnVGhpcyBpcyBhIHZlcnkgbG9uZyBtZXNzYWdlIHRoYXQgY29udGFpbnMgbXVsdGlwbGUgbGluZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy4gJyArXG4gICAgICAnSXQgaXMgZGVzaWduZWQgdG8gdGVzdCB0aGUgRUlQLTE5MSBtZXNzYWdlIGZvcm1hdCB3aXRoIGEgbW9yZSBjb21wbGV4IHBheWxvYWQuJyxcbiAgfSxcbiAgZWlwMTkxOiB7XG4gICAgdmFsaWRTaWduYWJsZVBheWxvYWQ6ICcweDE5NDU3NDY4NjU3MjY1NzU2ZDIwNTM2OTY3NmU2NTY0MjA0ZDY1NzM3MzYxNjc2NTNhMGQ0ODY1NmM2YzZmMmMyMDc3NmY3MjZjNjQyMScsXG4gICAgc2lnbmF0dXJlOiB7XG4gICAgICBwdWJsaWNLZXk6IHsgcHViOiAnMHg3RTVGNDU1MjA5MUE2OTEyNWQ1RGZDYjdiOEMyNjU5MDI5Mzk1QmRmJyB9LFxuICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbShcbiAgICAgICAgJzVkOTliNmY3ZjZkMWY3M2QxYTI2NDk3ZjJiMWM4OWIyNGMwOTkzOTEzZjg2ZTlhMmQwMmNkNjk4ODdkOWM5NGYzYzg4MDM1ODU3OWQ4MTFiMjFkZDFiN2ZkOWJiMDFjMWQ4MWQxMGU2OWYwMzg0ZTY3NWMzMmIzOTY0M2JlODkyMWInLFxuICAgICAgICAnaGV4J1xuICAgICAgKSxcbiAgICB9LFxuICAgIHNpZ25lcjogJzB4N0U1RjQ1NTIwOTFBNjkxMjVkNURmQ2I3YjhDMjY1OTAyOTM5NUJkZicsXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBjdXN0b21EYXRhOiAndGVzdCBkYXRhJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './eip191/eip191Message';
2
+ export * from './eip191/eip191MessageBuilder';
3
+ export * from './messageBuilderFactory';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/messages/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./eip191/eip191Message"), exports);
18
+ __exportStar(require("./eip191/eip191MessageBuilder"), exports);
19
+ __exportStar(require("./messageBuilderFactory"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF1QztBQUN2QyxnRUFBOEM7QUFDOUMsMERBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9laXAxOTEvZWlwMTkxTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL2VpcDE5MS9laXAxOTFNZXNzYWdlQnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VCdWlsZGVyRmFjdG9yeSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=messageBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/messages/messageBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,44 @@
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
+ require("should");
7
+ const sinon_1 = __importDefault(require("sinon"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const fixtures_1 = require("./fixtures");
10
+ const src_1 = require("../../../src");
11
+ describe('Message Builder Factory', () => {
12
+ const sandbox = sinon_1.default.createSandbox();
13
+ afterEach(() => {
14
+ sandbox.restore();
15
+ });
16
+ describe('getMessageBuilder', () => {
17
+ it('should return the correct builder for EIP191 message type', () => {
18
+ const factory = new src_1.MessageBuilderFactory(fixtures_1.fixtures.coin);
19
+ const builder = factory.getMessageBuilder(sdk_core_1.MessageStandardType.EIP191);
20
+ builder.should.be.instanceof(src_1.Eip191MessageBuilder);
21
+ });
22
+ it('should throw an error for unsupported message types', () => {
23
+ const factory = new src_1.MessageBuilderFactory(fixtures_1.fixtures.coin);
24
+ // Test with an invalid/unsupported message type
25
+ const unsupportedType = 'UNSUPPORTED_TYPE';
26
+ (() => factory.getMessageBuilder(unsupportedType)).should.throw(/Invalid message standard/);
27
+ });
28
+ it('should throw for unknown message standard', () => {
29
+ const factory = new src_1.MessageBuilderFactory(fixtures_1.fixtures.coin);
30
+ (() => factory.getMessageBuilder(sdk_core_1.MessageStandardType.UNKNOWN)).should.throw(`Invalid message standard ${sdk_core_1.MessageStandardType.UNKNOWN}`);
31
+ });
32
+ });
33
+ describe('Integration with builder', () => {
34
+ it('should create a builder that can build a valid message', async () => {
35
+ const factory = new src_1.MessageBuilderFactory(fixtures_1.fixtures.coin);
36
+ const builder = factory.getMessageBuilder(sdk_core_1.MessageStandardType.EIP191);
37
+ builder.setPayload(fixtures_1.fixtures.messages.validMessage);
38
+ const message = await builder.build();
39
+ message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
40
+ message.getPayload().should.equal(fixtures_1.fixtures.messages.validMessage);
41
+ });
42
+ });
43
+ });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZUJ1aWxkZXJGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L21lc3NhZ2VzL21lc3NhZ2VCdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtCQUFnQjtBQUNoQixrREFBMEI7QUFDMUIsbURBQTJEO0FBQzNELHlDQUFzQztBQUN0QyxzQ0FBMkU7QUFFM0UsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFFdEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtZQUNuRSxNQUFNLE9BQU8sR0FBRyxJQUFJLDJCQUFxQixDQUFDLG1CQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLDhCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXRFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQywwQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtZQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLDJCQUFxQixDQUFDLG1CQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekQsZ0RBQWdEO1lBQ2hELE1BQU0sZUFBZSxHQUFHLGtCQUF5QyxDQUFDO1lBRWxFLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLDJCQUFxQixDQUFDLG1CQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekQsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsOEJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN6RSw0QkFBNEIsOEJBQW1CLENBQUMsT0FBTyxFQUFFLENBQzFELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUN4QyxFQUFFLENBQUMsd0RBQXdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdEUsTUFBTSxPQUFPLEdBQUcsSUFBSSwyQkFBcUIsQ0FBQyxtQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RSxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRW5ELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXRDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNELE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBNZXNzYWdlU3RhbmRhcmRUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZml4dHVyZXMgfSBmcm9tICcuL2ZpeHR1cmVzJztcbmltcG9ydCB7IEVpcDE5MU1lc3NhZ2VCdWlsZGVyLCBNZXNzYWdlQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnTWVzc2FnZSBCdWlsZGVyIEZhY3RvcnknLCAoKSA9PiB7XG4gIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldE1lc3NhZ2VCdWlsZGVyJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IGJ1aWxkZXIgZm9yIEVJUDE5MSBtZXNzYWdlIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShmaXh0dXJlcy5jb2luKTtcblxuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0TWVzc2FnZUJ1aWxkZXIoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuXG4gICAgICBidWlsZGVyLnNob3VsZC5iZS5pbnN0YW5jZW9mKEVpcDE5MU1lc3NhZ2VCdWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgZm9yIHVuc3VwcG9ydGVkIG1lc3NhZ2UgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShmaXh0dXJlcy5jb2luKTtcblxuICAgICAgLy8gVGVzdCB3aXRoIGFuIGludmFsaWQvdW5zdXBwb3J0ZWQgbWVzc2FnZSB0eXBlXG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFR5cGUgPSAnVU5TVVBQT1JURURfVFlQRScgYXMgTWVzc2FnZVN0YW5kYXJkVHlwZTtcblxuICAgICAgKCgpID0+IGZhY3RvcnkuZ2V0TWVzc2FnZUJ1aWxkZXIodW5zdXBwb3J0ZWRUeXBlKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIG1lc3NhZ2Ugc3RhbmRhcmQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIHVua25vd24gbWVzc2FnZSBzdGFuZGFyZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgTWVzc2FnZUJ1aWxkZXJGYWN0b3J5KGZpeHR1cmVzLmNvaW4pO1xuXG4gICAgICAoKCkgPT4gZmFjdG9yeS5nZXRNZXNzYWdlQnVpbGRlcihNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV04pKS5zaG91bGQudGhyb3coXG4gICAgICAgIGBJbnZhbGlkIG1lc3NhZ2Ugc3RhbmRhcmQgJHtNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV059YFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ludGVncmF0aW9uIHdpdGggYnVpbGRlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIGJ1aWxkZXIgdGhhdCBjYW4gYnVpbGQgYSB2YWxpZCBtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBNZXNzYWdlQnVpbGRlckZhY3RvcnkoZml4dHVyZXMuY29pbik7XG5cbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldE1lc3NhZ2VCdWlsZGVyKE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICAgIGJ1aWxkZXIuc2V0UGF5bG9hZChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBtZXNzYWdlLmdldFR5cGUoKS5zaG91bGQuZXF1YWwoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgICAgbWVzc2FnZS5nZXRQYXlsb2FkKCkuc2hvdWxkLmVxdWFsKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export declare function runTokenTestInitialization(currentCoinToken: any, coinName: string, tokenNetworkName: string, testData: any): void;
2
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../test/unit/token.ts"],"names":[],"mappings":"AAGA,wBAAgB,0BAA0B,CACxC,gBAAgB,KAAA,EAChB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,GAAG,QAiCd"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runTokenTestInitialization = runTokenTestInitialization;
4
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
5
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
6
+ function runTokenTestInitialization(currentCoinToken, coinName, tokenNetworkName, testData) {
7
+ describe(`${coinName} Token:`, () => {
8
+ let bitgo;
9
+ let tokenCoin;
10
+ const coin = testData.COIN;
11
+ const tokenName = testData.NETWORK_TOKEN_IDENTIFIER;
12
+ before(function () {
13
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
14
+ currentCoinToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
15
+ bitgo.safeRegister(name, coinConstructor);
16
+ });
17
+ bitgo.initializeTestVars();
18
+ tokenCoin = bitgo.coin(tokenName);
19
+ });
20
+ it('should return constants', () => {
21
+ tokenCoin.getChain().should.equal(tokenName);
22
+ tokenCoin.getBaseChain().should.equal(coin);
23
+ tokenCoin.getFullName().should.equal(`${coinName} Token`);
24
+ tokenCoin.getBaseFactor().should.equal(1e18);
25
+ tokenCoin.type.should.equal(tokenName);
26
+ tokenCoin.name.should.equal(tokenNetworkName);
27
+ tokenCoin.coin.should.equal(coin);
28
+ tokenCoin.network.should.equal('Testnet');
29
+ tokenCoin.decimalPlaces.should.equal(18);
30
+ });
31
+ it('should return same token by contract address', () => {
32
+ const tokencoinBycontractAddress = bitgo.coin(tokenCoin.tokenContractAddress);
33
+ tokenCoin.should.deepEqual(tokencoinBycontractAddress);
34
+ });
35
+ });
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxnRUFxQ0M7QUF4Q0QsbURBQStEO0FBQy9ELGlEQUErQztBQUUvQyxTQUFnQiwwQkFBMEIsQ0FDeEMsZ0JBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLGdCQUF3QixFQUN4QixRQUFhO0lBRWIsUUFBUSxDQUFDLEdBQUcsUUFBUSxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLElBQUksS0FBbUIsQ0FBQztRQUN4QixJQUFJLFNBQVMsQ0FBQztRQUNkLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO1FBQ3BELE1BQU0sQ0FBQztZQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO2dCQUMvRSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtZQUNqQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsUUFBUSxDQUFDLENBQUM7WUFDMUQsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDOUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blRva2VuVGVzdEluaXRpYWxpemF0aW9uKFxuICBjdXJyZW50Q29pblRva2VuLFxuICBjb2luTmFtZTogc3RyaW5nLFxuICB0b2tlbk5ldHdvcmtOYW1lOiBzdHJpbmcsXG4gIHRlc3REYXRhOiBhbnlcbikge1xuICBkZXNjcmliZShgJHtjb2luTmFtZX0gVG9rZW46YCwgKCkgPT4ge1xuICAgIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICAgIGxldCB0b2tlbkNvaW47XG4gICAgY29uc3QgY29pbiA9IHRlc3REYXRhLkNPSU47XG4gICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEuTkVUV09SS19UT0tFTl9JREVOVElGSUVSO1xuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICAgIGN1cnJlbnRDb2luVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICAgIGJpdGdvLnNhZmVSZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICAgICAgfSk7XG4gICAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICAgIHRva2VuQ29pbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsICgpID0+IHtcbiAgICAgIHRva2VuQ29pbi5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCh0b2tlbk5hbWUpO1xuICAgICAgdG9rZW5Db2luLmdldEJhc2VDaGFpbigpLnNob3VsZC5lcXVhbChjb2luKTtcbiAgICAgIHRva2VuQ29pbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbChgJHtjb2luTmFtZX0gVG9rZW5gKTtcbiAgICAgIHRva2VuQ29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgICAgdG9rZW5Db2luLnR5cGUuc2hvdWxkLmVxdWFsKHRva2VuTmFtZSk7XG4gICAgICB0b2tlbkNvaW4ubmFtZS5zaG91bGQuZXF1YWwodG9rZW5OZXR3b3JrTmFtZSk7XG4gICAgICB0b2tlbkNvaW4uY29pbi5zaG91bGQuZXF1YWwoY29pbik7XG4gICAgICB0b2tlbkNvaW4ubmV0d29yay5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQnKTtcbiAgICAgIHRva2VuQ29pbi5kZWNpbWFsUGxhY2VzLnNob3VsZC5lcXVhbCgxOCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzYW1lIHRva2VuIGJ5IGNvbnRyYWN0IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbmNvaW5CeWNvbnRyYWN0QWRkcmVzcyA9IGJpdGdvLmNvaW4odG9rZW5Db2luLnRva2VuQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHRva2VuQ29pbi5zaG91bGQuZGVlcEVxdWFsKHRva2VuY29pbkJ5Y29udHJhY3RBZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import Common from '@ethereumjs/common';
2
+ export declare function runTransactionTests(coinName: string, testData: any, common: Common): void;
3
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAuDlF"}