@bitgo-beta/abstract-eth 1.0.2-beta.211 → 1.0.2-beta.2110

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 (178) hide show
  1. package/dist/src/abstractEthLikeCoin.d.ts +20 -9
  2. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
  3. package/dist/src/abstractEthLikeCoin.js +46 -15
  4. package/dist/src/abstractEthLikeNewCoins.d.ts +876 -0
  5. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  6. package/dist/src/abstractEthLikeNewCoins.js +2664 -0
  7. package/dist/src/ethLikeToken.d.ts +38 -6
  8. package/dist/src/ethLikeToken.d.ts.map +1 -1
  9. package/dist/src/ethLikeToken.js +289 -10
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +8 -2
  13. package/dist/src/lib/constants.d.ts +4 -0
  14. package/dist/src/lib/constants.d.ts.map +1 -0
  15. package/dist/src/lib/constants.js +11 -0
  16. package/dist/src/lib/contractCall.d.ts +8 -0
  17. package/dist/src/lib/contractCall.d.ts.map +1 -0
  18. package/dist/src/lib/contractCall.js +17 -0
  19. package/dist/src/lib/decryptionDelegationBuilder.d.ts +90 -0
  20. package/dist/src/lib/decryptionDelegationBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/decryptionDelegationBuilder.js +59 -0
  22. package/dist/src/lib/iface.d.ts +143 -0
  23. package/dist/src/lib/iface.d.ts.map +1 -0
  24. package/dist/src/lib/iface.js +8 -0
  25. package/dist/src/lib/index.d.ts +19 -0
  26. package/dist/src/lib/index.d.ts.map +1 -0
  27. package/dist/src/lib/index.js +60 -0
  28. package/dist/src/lib/keyPair.d.ts +26 -0
  29. package/dist/src/lib/keyPair.d.ts.map +1 -0
  30. package/dist/src/lib/keyPair.js +65 -0
  31. package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
  32. package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
  33. package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
  34. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
  35. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
  37. package/dist/src/lib/messages/eip191/index.d.ts +3 -0
  38. package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
  39. package/dist/src/lib/messages/eip191/index.js +19 -0
  40. package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
  41. package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
  42. package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
  43. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
  44. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
  46. package/dist/src/lib/messages/eip712/index.d.ts +3 -0
  47. package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
  48. package/dist/src/lib/messages/eip712/index.js +19 -0
  49. package/dist/src/lib/messages/index.d.ts +4 -0
  50. package/dist/src/lib/messages/index.d.ts.map +1 -0
  51. package/dist/src/lib/messages/index.js +20 -0
  52. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  53. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  54. package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
  55. package/dist/src/lib/transaction.d.ts +69 -0
  56. package/dist/src/lib/transaction.d.ts.map +1 -0
  57. package/dist/src/lib/transaction.js +149 -0
  58. package/dist/src/lib/transactionBuilder.d.ts +313 -0
  59. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder.js +926 -0
  61. package/dist/src/lib/transferBuilder.d.ts +76 -0
  62. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transferBuilder.js +307 -0
  64. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
  65. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
  67. package/dist/src/lib/transferBuilders/index.d.ts +5 -0
  68. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  69. package/dist/src/lib/transferBuilders/index.js +21 -0
  70. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
  71. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  72. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
  73. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +21 -0
  74. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  75. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +91 -0
  76. package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts +35 -0
  77. package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts.map +1 -0
  78. package/dist/src/lib/transferBuilders/transferBuilderERC7984.js +113 -0
  79. package/dist/src/lib/types.d.ts +40 -0
  80. package/dist/src/lib/types.d.ts.map +1 -0
  81. package/dist/src/lib/types.js +140 -0
  82. package/dist/src/lib/utils.d.ts +365 -0
  83. package/dist/src/lib/utils.d.ts.map +1 -0
  84. package/dist/src/lib/utils.js +969 -0
  85. package/dist/src/lib/walletUtil.d.ts +46 -0
  86. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  87. package/dist/src/lib/walletUtil.js +53 -0
  88. package/dist/src/lib/zamaUtils.d.ts +107 -0
  89. package/dist/src/lib/zamaUtils.d.ts.map +1 -0
  90. package/dist/src/lib/zamaUtils.js +220 -0
  91. package/dist/src/types.d.ts +9 -0
  92. package/dist/src/types.d.ts.map +1 -0
  93. package/dist/src/types.js +3 -0
  94. package/dist/test/index.d.ts +2 -0
  95. package/dist/test/index.d.ts.map +1 -0
  96. package/dist/test/index.js +18 -0
  97. package/dist/test/unit/coin.d.ts +8 -0
  98. package/dist/test/unit/coin.d.ts.map +1 -0
  99. package/dist/test/unit/coin.js +577 -0
  100. package/dist/test/unit/decryptionDelegationBuilder.d.ts +2 -0
  101. package/dist/test/unit/decryptionDelegationBuilder.d.ts.map +1 -0
  102. package/dist/test/unit/decryptionDelegationBuilder.js +265 -0
  103. package/dist/test/unit/index.d.ts +8 -0
  104. package/dist/test/unit/index.d.ts.map +1 -0
  105. package/dist/test/unit/index.js +24 -0
  106. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
  107. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
  108. package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
  109. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
  110. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
  111. package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
  112. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
  113. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
  114. package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
  115. package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
  116. package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
  117. package/dist/test/unit/messages/eip191/eip191Message.js +15 -0
  118. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
  119. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  120. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +16 -0
  121. package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
  122. package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
  123. package/dist/test/unit/messages/eip191/fixtures.js +63 -0
  124. package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
  125. package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
  126. package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
  127. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
  128. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  129. package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
  130. package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
  131. package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
  132. package/dist/test/unit/messages/eip712/fixtures.js +120 -0
  133. package/dist/test/unit/messages/index.d.ts +4 -0
  134. package/dist/test/unit/messages/index.d.ts.map +1 -0
  135. package/dist/test/unit/messages/index.js +20 -0
  136. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  137. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  138. package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
  139. package/dist/test/unit/token.d.ts +2 -0
  140. package/dist/test/unit/token.d.ts.map +1 -0
  141. package/dist/test/unit/token.js +37 -0
  142. package/dist/test/unit/transaction.d.ts +3 -0
  143. package/dist/test/unit/transaction.d.ts.map +1 -0
  144. package/dist/test/unit/transaction.js +73 -0
  145. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
  146. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  147. package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
  148. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +3 -0
  149. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
  150. package/dist/test/unit/transactionBuilder/decryptionDelegation.js +161 -0
  151. package/dist/test/unit/transactionBuilder/flushERC7984.d.ts +3 -0
  152. package/dist/test/unit/transactionBuilder/flushERC7984.d.ts.map +1 -0
  153. package/dist/test/unit/transactionBuilder/flushERC7984.js +292 -0
  154. package/dist/test/unit/transactionBuilder/flushNft.d.ts +2 -0
  155. package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +1 -0
  156. package/dist/test/unit/transactionBuilder/flushNft.js +381 -0
  157. package/dist/test/unit/transactionBuilder/index.d.ts +7 -0
  158. package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
  159. package/dist/test/unit/transactionBuilder/index.js +23 -0
  160. package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
  161. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  162. package/dist/test/unit/transactionBuilder/send.js +197 -0
  163. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +11 -0
  164. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  165. package/dist/test/unit/transactionBuilder/walletInitialization.js +137 -0
  166. package/dist/test/unit/transferBuilder.d.ts +2 -0
  167. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  168. package/dist/test/unit/transferBuilder.js +76 -0
  169. package/dist/test/unit/utils.d.ts +2 -0
  170. package/dist/test/unit/utils.d.ts.map +1 -0
  171. package/dist/test/unit/utils.js +214 -0
  172. package/dist/test/unit/zamaUtils.d.ts +2 -0
  173. package/dist/test/unit/zamaUtils.d.ts.map +1 -0
  174. package/dist/test/unit/zamaUtils.js +352 -0
  175. package/dist/tsconfig.tsbuildinfo +1 -8286
  176. package/package.json +34 -10
  177. package/.eslintignore +0 -5
  178. package/CHANGELOG.md +0 -178
@@ -0,0 +1,19 @@
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("./eip191Message"), exports);
18
+ __exportStar(require("./eip191MessageBuilder"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2VpcDE5MS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWdDO0FBQ2hDLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWlwMTkxTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL2VpcDE5MU1lc3NhZ2VCdWlsZGVyJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { BaseMessage, MessageOptions } from '@bitgo-beta/sdk-core';
2
+ export declare class EIP712Message extends BaseMessage {
3
+ constructor(options: MessageOptions);
4
+ getSignablePayload(): Promise<string | Buffer>;
5
+ }
6
+ //# sourceMappingURL=eip712Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip712Message.d.ts","sourceRoot":"","sources":["../../../../../src/lib/messages/eip712/eip712Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAGxF,qBAAa,aAAc,SAAQ,WAAW;gBAChC,OAAO,EAAE,cAAc;IAO7B,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAqBrD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EIP712Message = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const eth_sig_util_1 = require("@metamask/eth-sig-util");
6
+ class EIP712Message extends sdk_core_1.BaseMessage {
7
+ constructor(options) {
8
+ super({
9
+ ...options,
10
+ type: sdk_core_1.MessageStandardType.EIP712,
11
+ });
12
+ }
13
+ async getSignablePayload() {
14
+ const data = JSON.parse(this.payload);
15
+ const sanitizedData = eth_sig_util_1.TypedDataUtils.sanitizeData(data);
16
+ const parts = [];
17
+ parts.push(Buffer.from('1901', 'hex'));
18
+ parts.push(eth_sig_util_1.TypedDataUtils.eip712DomainHash(data, eth_sig_util_1.SignTypedDataVersion.V4));
19
+ if (sanitizedData.primaryType !== 'EIP712Domain') {
20
+ parts.push(eth_sig_util_1.TypedDataUtils.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, eth_sig_util_1.SignTypedDataVersion.V4));
21
+ }
22
+ this.signablePayload = Buffer.concat(parts);
23
+ return this.signablePayload;
24
+ }
25
+ }
26
+ exports.EIP712Message = EIP712Message;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbWVzc2FnZXMvZWlwNzEyL2VpcDcxMk1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXdGO0FBQ3hGLHlEQUE4RTtBQUU5RSxNQUFhLGFBQWMsU0FBUSxzQkFBVztJQUM1QyxZQUFZLE9BQXVCO1FBQ2pDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSw4QkFBbUIsQ0FBQyxNQUFNO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLDZCQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLElBQUksQ0FBQyw2QkFBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxtQ0FBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksYUFBYSxDQUFDLFdBQVcsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNqRCxLQUFLLENBQUMsSUFBSSxDQUNSLDZCQUFjLENBQUMsVUFBVSxDQUN2QixhQUFhLENBQUMsV0FBcUIsRUFDbkMsYUFBYSxDQUFDLE9BQU8sRUFDckIsYUFBYSxDQUFDLEtBQUssRUFDbkIsbUNBQW9CLENBQUMsRUFBRSxDQUN4QixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUE3QkQsc0NBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1lc3NhZ2UsIE1lc3NhZ2VPcHRpb25zLCBNZXNzYWdlU3RhbmRhcmRUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU2lnblR5cGVkRGF0YVZlcnNpb24sIFR5cGVkRGF0YVV0aWxzIH0gZnJvbSAnQG1ldGFtYXNrL2V0aC1zaWctdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBFSVA3MTJNZXNzYWdlIGV4dGVuZHMgQmFzZU1lc3NhZ2Uge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNZXNzYWdlT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB0eXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDcxMixcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFNpZ25hYmxlUGF5bG9hZCgpOiBQcm9taXNlPHN0cmluZyB8IEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHRoaXMucGF5bG9hZCk7XG4gICAgY29uc3Qgc2FuaXRpemVkRGF0YSA9IFR5cGVkRGF0YVV0aWxzLnNhbml0aXplRGF0YShkYXRhKTtcbiAgICBjb25zdCBwYXJ0czogQnVmZmVyW10gPSBbXTtcblxuICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oJzE5MDEnLCAnaGV4JykpO1xuICAgIHBhcnRzLnB1c2goVHlwZWREYXRhVXRpbHMuZWlwNzEyRG9tYWluSGFzaChkYXRhLCBTaWduVHlwZWREYXRhVmVyc2lvbi5WNCkpO1xuICAgIGlmIChzYW5pdGl6ZWREYXRhLnByaW1hcnlUeXBlICE9PSAnRUlQNzEyRG9tYWluJykge1xuICAgICAgcGFydHMucHVzaChcbiAgICAgICAgVHlwZWREYXRhVXRpbHMuaGFzaFN0cnVjdChcbiAgICAgICAgICBzYW5pdGl6ZWREYXRhLnByaW1hcnlUeXBlIGFzIHN0cmluZyxcbiAgICAgICAgICBzYW5pdGl6ZWREYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgc2FuaXRpemVkRGF0YS50eXBlcyxcbiAgICAgICAgICBTaWduVHlwZWREYXRhVmVyc2lvbi5WNFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2lnbmFibGVQYXlsb2FkID0gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG4gICAgcmV0dXJuIHRoaXMuc2lnbmFibGVQYXlsb2FkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseMessageBuilder, IMessage, MessageOptions } from '@bitgo-beta/sdk-core';
3
+ export declare class Eip712MessageBuilder extends BaseMessageBuilder {
4
+ constructor(_coinConfig: Readonly<CoinConfig>);
5
+ buildMessage(options: MessageOptions): Promise<IMessage>;
6
+ }
7
+ //# sourceMappingURL=eip712MessageBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip712MessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/lib/messages/eip712/eip712MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAGzG,qBAAa,oBAAqB,SAAQ,kBAAkB;gBACvC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI9C,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;CAG/D"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Eip712MessageBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const eip712Message_1 = require("./eip712Message");
6
+ class Eip712MessageBuilder extends sdk_core_1.BaseMessageBuilder {
7
+ constructor(_coinConfig) {
8
+ super(_coinConfig, sdk_core_1.MessageStandardType.EIP712);
9
+ }
10
+ async buildMessage(options) {
11
+ return new eip712Message_1.EIP712Message(options);
12
+ }
13
+ }
14
+ exports.Eip712MessageBuilder = Eip712MessageBuilder;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyTWVzc2FnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2VpcDcxMi9laXA3MTJNZXNzYWdlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBeUc7QUFDekcsbURBQWdEO0FBRWhELE1BQWEsb0JBQXFCLFNBQVEsNkJBQWtCO0lBQzFELFlBQW1CLFdBQWlDO1FBQ2xELEtBQUssQ0FBQyxXQUFXLEVBQUUsOEJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBdUI7UUFDeEMsT0FBTyxJQUFJLDZCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBUkQsb0RBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlTWVzc2FnZUJ1aWxkZXIsIElNZXNzYWdlLCBNZXNzYWdlT3B0aW9ucywgTWVzc2FnZVN0YW5kYXJkVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEVJUDcxMk1lc3NhZ2UgfSBmcm9tICcuL2VpcDcxMk1lc3NhZ2UnO1xuXG5leHBvcnQgY2xhc3MgRWlwNzEyTWVzc2FnZUJ1aWxkZXIgZXh0ZW5kcyBCYXNlTWVzc2FnZUJ1aWxkZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcsIE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQNzEyKTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkTWVzc2FnZShvcHRpb25zOiBNZXNzYWdlT3B0aW9ucyk6IFByb21pc2U8SU1lc3NhZ2U+IHtcbiAgICByZXR1cm4gbmV3IEVJUDcxMk1lc3NhZ2Uob3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './eip712Message';
2
+ export * from './eip712MessageBuilder';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/messages/eip712/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,19 @@
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("./eip712Message"), exports);
18
+ __exportStar(require("./eip712MessageBuilder"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2VpcDcxMi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWdDO0FBQ2hDLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWlwNzEyTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL2VpcDcxMk1lc3NhZ2VCdWlsZGVyJztcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './messageBuilderFactory';
2
+ export * from './eip191';
3
+ export * from './eip712';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/messages/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,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("./messageBuilderFactory"), exports);
18
+ __exportStar(require("./eip191"), exports);
19
+ __exportStar(require("./eip712"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMsMkNBQXlCO0FBQ3pCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZUJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZWlwMTkxJztcbmV4cG9ydCAqIGZyb20gJy4vZWlwNzEyJztcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseMessageBuilderFactory, IMessageBuilder, MessageStandardType } from '@bitgo-beta/sdk-core';
3
+ export declare class MessageBuilderFactory extends BaseMessageBuilderFactory {
4
+ constructor(coinConfig: Readonly<CoinConfig>);
5
+ getMessageBuilder(type: MessageStandardType): IMessageBuilder;
6
+ }
7
+ //# sourceMappingURL=messageBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/lib/messages/messageBuilderFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEvG,qBAAa,qBAAsB,SAAQ,yBAAyB;gBACtD,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIrC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe;CAUrE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageBuilderFactory = void 0;
4
+ const eip191_1 = require("./eip191");
5
+ const eip712_1 = require("./eip712");
6
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
7
+ class MessageBuilderFactory extends sdk_core_1.BaseMessageBuilderFactory {
8
+ constructor(coinConfig) {
9
+ super(coinConfig);
10
+ }
11
+ getMessageBuilder(type) {
12
+ switch (type) {
13
+ case sdk_core_1.MessageStandardType.EIP191:
14
+ return new eip191_1.Eip191MessageBuilder(this.coinConfig);
15
+ case sdk_core_1.MessageStandardType.EIP712:
16
+ return new eip712_1.Eip712MessageBuilder(this.coinConfig);
17
+ default:
18
+ throw new Error(`Invalid message standard ${type}`);
19
+ }
20
+ }
21
+ }
22
+ exports.MessageBuilderFactory = MessageBuilderFactory;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZUJ1aWxkZXJGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQWdEO0FBQ2hELHFDQUFnRDtBQUVoRCxtREFBdUc7QUFFdkcsTUFBYSxxQkFBc0IsU0FBUSxvQ0FBeUI7SUFDbEUsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQXlCO1FBQ2hELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLDhCQUFtQixDQUFDLE1BQU07Z0JBQzdCLE9BQU8sSUFBSSw2QkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsS0FBSyw4QkFBbUIsQ0FBQyxNQUFNO2dCQUM3QixPQUFPLElBQUksNkJBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25EO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWZELHNEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWlwMTkxTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuL2VpcDE5MSc7XG5pbXBvcnQgeyBFaXA3MTJNZXNzYWdlQnVpbGRlciB9IGZyb20gJy4vZWlwNzEyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VNZXNzYWdlQnVpbGRlckZhY3RvcnksIElNZXNzYWdlQnVpbGRlciwgTWVzc2FnZVN0YW5kYXJkVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VCdWlsZGVyKHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUpOiBJTWVzc2FnZUJ1aWxkZXIge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MTpcbiAgICAgICAgcmV0dXJuIG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcih0aGlzLmNvaW5Db25maWcpO1xuICAgICAgY2FzZSBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDcxMjpcbiAgICAgICAgcmV0dXJuIG5ldyBFaXA3MTJNZXNzYWdlQnVpbGRlcih0aGlzLmNvaW5Db25maWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1lc3NhZ2Ugc3RhbmRhcmQgJHt0eXBlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Ethereum transaction model. This is the base model for all ethereum based coins (Celo, ETC, RSK, ETH)
3
+ */
4
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
+ import EthereumCommon from '@ethereumjs/common';
6
+ import { BaseKey, Entry, BaseTransaction, TransactionType } from '@bitgo-beta/sdk-core';
7
+ import { KeyPair } from './keyPair';
8
+ import { EthLikeTransactionData, TxData } from './iface';
9
+ export declare class Transaction extends BaseTransaction {
10
+ protected _id: string;
11
+ protected _inputs: Entry[];
12
+ protected _outputs: Entry[];
13
+ protected _signatures: string[];
14
+ protected _type: TransactionType;
15
+ protected _common: EthereumCommon;
16
+ protected _transactionData?: EthLikeTransactionData;
17
+ /**
18
+ * return a new Transaction initialized with the serialized tx string
19
+ *
20
+ * @param coinConfig The coin configuration object
21
+ * @param common network commons
22
+ * @param serializedTx The serialized tx string with which to initialize the transaction
23
+ * @param isFirstSigner whether the transaction is being signed by the first signer
24
+ * @returns a new transaction object
25
+ */
26
+ static fromSerialized(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, serializedTx: string, isFirstSigner?: boolean): Transaction;
27
+ /**
28
+ * Public constructor.
29
+ *
30
+ * @param {Readonly<CoinConfig>} coinConfig
31
+ * @param common the network commons
32
+ * @param {TxData} txData The object transaction data or encoded transaction data
33
+ * @param {boolean} isFirstSigner whether the transaction is being signed by the first signer
34
+ */
35
+ constructor(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, txData?: TxData, isFirstSigner?: boolean);
36
+ /**
37
+ * Set the transaction data
38
+ *
39
+ * @param {TxData} txData The transaction data to set
40
+ * @param {boolean} isFirstSigner Whether the transaction is being signed by the first signer
41
+ */
42
+ setTransactionData(txData: TxData, isFirstSigner?: boolean): void;
43
+ /**
44
+ * Update the internal fields based on the currently set transaction data, if there is any
45
+ */
46
+ protected updateFields(isFirstSigner?: boolean): void;
47
+ /**
48
+ * Set the transaction type
49
+ *
50
+ * @param {TransactionType} transactionType The transaction type to be set
51
+ */
52
+ setTransactionType(transactionType: TransactionType): void;
53
+ /** @inheritdoc */
54
+ canSign(key: BaseKey): boolean;
55
+ /**
56
+ * Sign the transaction with the provided key. It does not check if the signer is allowed to sign
57
+ * it or not.
58
+ *
59
+ * @param {KeyPair} keyPair The key to sign the transaction with
60
+ */
61
+ sign(keyPair: KeyPair): Promise<void>;
62
+ /** @inheritdoc */
63
+ get signablePayload(): Buffer;
64
+ /** @inheritdoc */
65
+ toBroadcastFormat(): string;
66
+ /** @inheritdoc */
67
+ toJson(): TxData;
68
+ }
69
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,OAAO,EACP,KAAK,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMzD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;IAElC,SAAS,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAEpD;;;;;;;;OAQG;WACW,cAAc,CAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,OAAO,GACtB,WAAW;IASd;;;;;;;OAOG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO;IAQ9G;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAKjE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAoDrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAK9B;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAK5B;IAED,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;CAMjB"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Transaction = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const types_1 = require("./types");
6
+ const utils_1 = require("./utils");
7
+ const UNSUPPORTED_COIN_NAME = 'unsupported';
8
+ class Transaction extends sdk_core_1.BaseTransaction {
9
+ /**
10
+ * return a new Transaction initialized with the serialized tx string
11
+ *
12
+ * @param coinConfig The coin configuration object
13
+ * @param common network commons
14
+ * @param serializedTx The serialized tx string with which to initialize the transaction
15
+ * @param isFirstSigner whether the transaction is being signed by the first signer
16
+ * @returns a new transaction object
17
+ */
18
+ static fromSerialized(coinConfig, common, serializedTx, isFirstSigner) {
19
+ return new Transaction(coinConfig, common, types_1.EthTransactionData.fromSerialized(serializedTx, common).toJson(), isFirstSigner);
20
+ }
21
+ /**
22
+ * Public constructor.
23
+ *
24
+ * @param {Readonly<CoinConfig>} coinConfig
25
+ * @param common the network commons
26
+ * @param {TxData} txData The object transaction data or encoded transaction data
27
+ * @param {boolean} isFirstSigner whether the transaction is being signed by the first signer
28
+ */
29
+ constructor(coinConfig, common, txData, isFirstSigner) {
30
+ super(coinConfig);
31
+ this._common = common;
32
+ if (txData) {
33
+ this.setTransactionData(txData, isFirstSigner);
34
+ }
35
+ }
36
+ /**
37
+ * Set the transaction data
38
+ *
39
+ * @param {TxData} txData The transaction data to set
40
+ * @param {boolean} isFirstSigner Whether the transaction is being signed by the first signer
41
+ */
42
+ setTransactionData(txData, isFirstSigner) {
43
+ this._transactionData = types_1.EthTransactionData.fromJson(txData, this._common);
44
+ this.updateFields(isFirstSigner);
45
+ }
46
+ /**
47
+ * Update the internal fields based on the currently set transaction data, if there is any
48
+ */
49
+ updateFields(isFirstSigner) {
50
+ if (!this._transactionData) {
51
+ return;
52
+ }
53
+ const txData = this._transactionData.toJson();
54
+ if (txData.id) {
55
+ this._id = txData.id;
56
+ }
57
+ this._type = (0, utils_1.classifyTransaction)(txData.data);
58
+ // reset arrays to empty to ensure that they are only set with one set of fresh values
59
+ this._inputs = [];
60
+ this._outputs = [];
61
+ this._signatures = [];
62
+ if ((0, utils_1.hasSignature)(txData)) {
63
+ this._signatures.push((0, utils_1.toStringSig)({ v: txData.v, r: txData.r, s: txData.s }));
64
+ }
65
+ // only send transactions have inputs / outputs / signatures to parse
66
+ if (this._type === sdk_core_1.TransactionType.Send ||
67
+ this._type === sdk_core_1.TransactionType.SendERC721 ||
68
+ this._type === sdk_core_1.TransactionType.SendERC1155) {
69
+ const { to, amount, tokenContractAddress, signature } = (0, utils_1.decodeTransferData)(txData.data, isFirstSigner);
70
+ let coinName;
71
+ if (tokenContractAddress) {
72
+ const token = (0, utils_1.getToken)(tokenContractAddress, this._coinConfig.network, this._coinConfig.family);
73
+ coinName = token ? token.name : UNSUPPORTED_COIN_NAME;
74
+ }
75
+ else {
76
+ coinName = this._coinConfig.name;
77
+ }
78
+ this.outputs.push({
79
+ address: to,
80
+ value: amount,
81
+ coin: coinName,
82
+ });
83
+ this.inputs.push({
84
+ address: txData.to, // the sending wallet contract is the recipient of the outer transaction
85
+ value: amount,
86
+ coin: coinName,
87
+ });
88
+ if (signature !== '0x') {
89
+ this._signatures.push(signature);
90
+ }
91
+ }
92
+ }
93
+ /**
94
+ * Set the transaction type
95
+ *
96
+ * @param {TransactionType} transactionType The transaction type to be set
97
+ */
98
+ setTransactionType(transactionType) {
99
+ this._type = transactionType;
100
+ }
101
+ /** @inheritdoc */
102
+ canSign(key) {
103
+ // TODO: implement this validation for the ethereum network
104
+ return true;
105
+ }
106
+ /**
107
+ * Sign the transaction with the provided key. It does not check if the signer is allowed to sign
108
+ * it or not.
109
+ *
110
+ * @param {KeyPair} keyPair The key to sign the transaction with
111
+ */
112
+ async sign(keyPair) {
113
+ if (!this._transactionData) {
114
+ throw new sdk_core_1.InvalidTransactionError('No transaction data to sign');
115
+ }
116
+ if (!keyPair.getKeys().prv) {
117
+ throw new sdk_core_1.SigningError('Missing private key');
118
+ }
119
+ await this._transactionData.sign(keyPair);
120
+ const txData = this._transactionData.toJson();
121
+ if (txData.id) {
122
+ this._id = txData.id;
123
+ }
124
+ this._signatures.push((0, utils_1.toStringSig)({ v: txData.v, r: txData.r, s: txData.s }));
125
+ }
126
+ /** @inheritdoc */
127
+ get signablePayload() {
128
+ if (!this._transactionData) {
129
+ throw new sdk_core_1.InvalidTransactionError('No transaction data to sign');
130
+ }
131
+ return this._transactionData.getSignablePayload();
132
+ }
133
+ /** @inheritdoc */
134
+ toBroadcastFormat() {
135
+ if (this._transactionData) {
136
+ return this._transactionData.toSerialized();
137
+ }
138
+ throw new sdk_core_1.InvalidTransactionError('No transaction data to format');
139
+ }
140
+ /** @inheritdoc */
141
+ toJson() {
142
+ if (this._transactionData) {
143
+ return this._transactionData.toJson();
144
+ }
145
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
146
+ }
147
+ }
148
+ exports.Transaction = Transaction;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLG1EQU84QjtBQUc5QixtQ0FBNkM7QUFDN0MsbUNBQXVHO0FBRXZHLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDO0FBRTVDLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBVTlDOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsVUFBZ0MsRUFDaEMsTUFBc0IsRUFDdEIsWUFBb0IsRUFDcEIsYUFBdUI7UUFFdkIsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsVUFBVSxFQUNWLE1BQU0sRUFDTiwwQkFBa0IsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUNoRSxhQUFhLENBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxVQUFnQyxFQUFFLE1BQXNCLEVBQUUsTUFBZSxFQUFFLGFBQXVCO1FBQzVHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsTUFBYyxFQUFFLGFBQXVCO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRywwQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNPLFlBQVksQ0FBQyxhQUF1QjtRQUM1QyxJQUFJ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QUErQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBOUtELGtDQThLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXRoZXJldW0gdHJhbnNhY3Rpb24gbW9kZWwuIFRoaXMgaXMgdGhlIGJhc2UgbW9kZWwgZm9yIGFsbCBldGhlcmV1bSBiYXNlZCBjb2lucyAoQ2VsbywgRVRDLCBSU0ssIEVUSClcbiAqL1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBFbnRyeSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBFdGhUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNsYXNzaWZ5VHJhbnNhY3Rpb24sIGRlY29kZVRyYW5zZmVyRGF0YSwgZ2V0VG9rZW4sIGhhc1NpZ25hdHVyZSwgdG9TdHJpbmdTaWcgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgVU5TVVBQT1JURURfQ09JTl9OQU1FID0gJ3Vuc3VwcG9ydGVkJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nOyAvLyBUaGUgdHJhbnNhY3Rpb24gaWQgYXMgc2VlbiBpbiB0aGUgYmxvY2tjaGFpblxuICBwcm90ZWN0ZWQgX2lucHV0czogRW50cnlbXTtcbiAgcHJvdGVjdGVkIF9vdXRwdXRzOiBFbnRyeVtdO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9jb21tb246IEV0aGVyZXVtQ29tbW9uO1xuXG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb25EYXRhPzogRXRoTGlrZVRyYW5zYWN0aW9uRGF0YTtcblxuICAvKipcbiAgICogcmV0dXJuIGEgbmV3IFRyYW5zYWN0aW9uIGluaXRpYWxpemVkIHdpdGggdGhlIHNlcmlhbGl6ZWQgdHggc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSBjb2luQ29uZmlnIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEBwYXJhbSBjb21tb24gbmV0d29yayBjb21tb25zXG4gICAqIEBwYXJhbSBzZXJpYWxpemVkVHggVGhlIHNlcmlhbGl6ZWQgdHggc3RyaW5nIHdpdGggd2hpY2ggdG8gaW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGlzRmlyc3RTaWduZXIgd2hldGhlciB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc2lnbmVkIGJ5IHRoZSBmaXJzdCBzaWduZXJcbiAgICogQHJldHVybnMgYSBuZXcgdHJhbnNhY3Rpb24gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKFxuICAgIGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LFxuICAgIGNvbW1vbjogRXRoZXJldW1Db21tb24sXG4gICAgc2VyaWFsaXplZFR4OiBzdHJpbmcsXG4gICAgaXNGaXJzdFNpZ25lcj86IGJvb2xlYW5cbiAgKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oXG4gICAgICBjb2luQ29uZmlnLFxuICAgICAgY29tbW9uLFxuICAgICAgRXRoVHJhbnNhY3Rpb25EYXRhLmZyb21TZXJpYWxpemVkKHNlcmlhbGl6ZWRUeCwgY29tbW9uKS50b0pzb24oKSxcbiAgICAgIGlzRmlyc3RTaWduZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFkb25seTxDb2luQ29uZmlnPn0gY29pbkNvbmZpZ1xuICAgKiBAcGFyYW0gY29tbW9uIHRoZSBuZXR3b3JrIGNvbW1vbnNcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4RGF0YSBUaGUgb2JqZWN0IHRyYW5zYWN0aW9uIGRhdGEgb3IgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXJzdFNpZ25lciB3aGV0aGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBiZWluZyBzaWduZWQgYnkgdGhlIGZpcnN0IHNpZ25lclxuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIGNvbW1vbjogRXRoZXJldW1Db21tb24sIHR4RGF0YT86IFR4RGF0YSwgaXNGaXJzdFNpZ25lcj86IGJvb2xlYW4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9jb21tb24gPSBjb21tb247XG4gICAgaWYgKHR4RGF0YSkge1xuICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvbkRhdGEodHhEYXRhLCBpc0ZpcnN0U2lnbmVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHhEYXRhfSB0eERhdGEgVGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gc2V0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXJzdFNpZ25lciBXaGV0aGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBiZWluZyBzaWduZWQgYnkgdGhlIGZpcnN0IHNpZ25lclxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25EYXRhKHR4RGF0YTogVHhEYXRhLCBpc0ZpcnN0U2lnbmVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uRGF0YSA9IEV0aFRyYW5zYWN0aW9uRGF0YS5mcm9tSnNvbih0eERhdGEsIHRoaXMuX2NvbW1vbik7XG4gICAgdGhpcy51cGRhdGVGaWVsZHMoaXNGaXJzdFNpZ25lcik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBpbnRlcm5hbCBmaWVsZHMgYmFzZWQgb24gdGhlIGN1cnJlbnRseSBzZXQgdHJhbnNhY3Rpb24gZGF0YSwgaWYgdGhlcmUgaXMgYW55XG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlRmllbGRzKGlzRmlyc3RTaWduZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eERhdGEgPSB0aGlzLl90cmFuc2FjdGlvbkRhdGEudG9Kc29uKCk7XG4gICAgaWYgKHR4RGF0YS5pZCkge1xuICAgICAgdGhpcy5faWQgPSB0eERhdGEuaWQ7XG4gICAgfVxuICAgIHRoaXMuX3R5cGUgPSBjbGFzc2lmeVRyYW5zYWN0aW9uKHR4RGF0YS5kYXRhKTtcblxuICAgIC8vIHJlc2V0IGFycmF5cyB0byBlbXB0eSB0byBlbnN1cmUgdGhhdCB0aGV5IGFyZSBvbmx5IHNldCB3aXRoIG9uZSBzZXQgb2YgZnJlc2ggdmFsdWVzXG4gICAgdGhpcy5faW5wdXRzID0gW107XG4gICAgdGhpcy5fb3V0cHV0cyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcblxuICAgIGlmIChoYXNTaWduYXR1cmUodHhEYXRhKSkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHRvU3RyaW5nU2lnKHsgdjogdHhEYXRhLnYhLCByOiB0eERhdGEuciEsIHM6IHR4RGF0YS5zISB9KSk7XG4gICAgfVxuXG4gICAgLy8gb25seSBzZW5kIHRyYW5zYWN0aW9ucyBoYXZlIGlucHV0cyAvIG91dHB1dHMgLyBzaWduYXR1cmVzIHRvIHBhcnNlXG4gICAgaWYgKFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQgfHxcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDNzIxIHx8XG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzExNTVcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgdG8sIGFtb3VudCwgdG9rZW5Db250cmFjdEFkZHJlc3MsIHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4RGF0YS5kYXRhLCBpc0ZpcnN0U2lnbmVyKTtcbiAgICAgIGxldCBjb2luTmFtZTogc3RyaW5nO1xuICAgICAgaWYgKHRva2VuQ29udHJhY3RBZGRyZXNzKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gZ2V0VG9rZW4odG9rZW5Db250cmFjdEFkZHJlc3MsIHRoaXMuX2NvaW5Db25maWcubmV0d29yaywgdGhpcy5fY29pbkNvbmZpZy5mYW1pbHkpO1xuICAgICAgICBjb2luTmFtZSA9IHRva2VuID8gdG9rZW4ubmFtZSA6IFVOU1VQUE9SVEVEX0NPSU5fTkFNRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvaW5OYW1lID0gdGhpcy5fY29pbkNvbmZpZy5uYW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm91dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHRvLFxuICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogdHhEYXRhLnRvISwgLy8gdGhlIHNlbmRpbmcgd2FsbGV0IGNvbnRyYWN0IGlzIHRoZSByZWNpcGllbnQgb2YgdGhlIG91dGVyIHRyYW5zYWN0aW9uXG4gICAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgfSk7XG4gICAgICBpZiAoc2lnbmF0dXJlICE9PSAnMHgnKSB7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyB2YWxpZGF0aW9uIGZvciB0aGUgZXRoZXJldW0gbmV0d29ya1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gdGhlIHRyYW5zYWN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGtleS4gSXQgZG9lcyBub3QgY2hlY2sgaWYgdGhlIHNpZ25lciBpcyBhbGxvd2VkIHRvIHNpZ25cbiAgICogaXQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgVGhlIGtleSB0byBzaWduIHRoZSB0cmFuc2FjdGlvbiB3aXRoXG4gICAqL1xuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdObyB0cmFuc2FjdGlvbiBkYXRhIHRvIHNpZ24nKTtcbiAgICB9XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnNpZ24oa2V5UGFpcik7XG4gICAgY29uc3QgdHhEYXRhID0gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvSnNvbigpO1xuICAgIGlmICh0eERhdGEuaWQpIHtcbiAgICAgIHRoaXMuX2lkID0gdHhEYXRhLmlkO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9TdHJpbmdTaWcoeyB2OiB0eERhdGEudiEsIHI6IHR4RGF0YS5yISwgczogdHhEYXRhLnMhIH0pKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBzaWduJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRhdGEuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvU2VyaWFsaXplZCgpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vIHRyYW5zYWN0aW9uIGRhdGEgdG8gZm9ybWF0Jyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uRGF0YS50b0pzb24oKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICB9XG59XG4iXX0=