@bitgo-beta/abstract-eth 1.0.2-beta.210 → 1.0.2-beta.2101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/abstractEthLikeCoin.d.ts +20 -9
- package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
- package/dist/src/abstractEthLikeCoin.js +46 -15
- package/dist/src/abstractEthLikeNewCoins.d.ts +876 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
- package/dist/src/abstractEthLikeNewCoins.js +2664 -0
- package/dist/src/ethLikeToken.d.ts +38 -6
- package/dist/src/ethLikeToken.d.ts.map +1 -1
- package/dist/src/ethLikeToken.js +289 -10
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -2
- package/dist/src/lib/constants.d.ts +4 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +11 -0
- package/dist/src/lib/contractCall.d.ts +8 -0
- package/dist/src/lib/contractCall.d.ts.map +1 -0
- package/dist/src/lib/contractCall.js +17 -0
- package/dist/src/lib/decryptionDelegationBuilder.d.ts +90 -0
- package/dist/src/lib/decryptionDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/decryptionDelegationBuilder.js +59 -0
- package/dist/src/lib/iface.d.ts +143 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +8 -0
- package/dist/src/lib/index.d.ts +19 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +60 -0
- package/dist/src/lib/keyPair.d.ts +26 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +65 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
- package/dist/src/lib/messages/eip191/index.d.ts +3 -0
- package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/index.js +19 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
- package/dist/src/lib/messages/eip712/index.d.ts +3 -0
- package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +4 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +20 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/transaction.d.ts +69 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +149 -0
- package/dist/src/lib/transactionBuilder.d.ts +313 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +926 -0
- package/dist/src/lib/transferBuilder.d.ts +76 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +307 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
- package/dist/src/lib/transferBuilders/index.d.ts +5 -0
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/index.js +21 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +21 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +91 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts +35 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC7984.js +113 -0
- package/dist/src/lib/types.d.ts +40 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +140 -0
- package/dist/src/lib/utils.d.ts +350 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +946 -0
- package/dist/src/lib/walletUtil.d.ts +46 -0
- package/dist/src/lib/walletUtil.d.ts.map +1 -0
- package/dist/src/lib/walletUtil.js +53 -0
- package/dist/src/lib/zamaUtils.d.ts +107 -0
- package/dist/src/lib/zamaUtils.d.ts.map +1 -0
- package/dist/src/lib/zamaUtils.js +220 -0
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +18 -0
- package/dist/test/unit/coin.d.ts +8 -0
- package/dist/test/unit/coin.d.ts.map +1 -0
- package/dist/test/unit/coin.js +577 -0
- package/dist/test/unit/decryptionDelegationBuilder.d.ts +2 -0
- package/dist/test/unit/decryptionDelegationBuilder.d.ts.map +1 -0
- package/dist/test/unit/decryptionDelegationBuilder.js +265 -0
- package/dist/test/unit/index.d.ts +8 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +24 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191Message.js +15 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/fixtures.js +63 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/fixtures.js +120 -0
- package/dist/test/unit/messages/index.d.ts +4 -0
- package/dist/test/unit/messages/index.d.ts.map +1 -0
- package/dist/test/unit/messages/index.js +20 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/token.d.ts +2 -0
- package/dist/test/unit/token.d.ts.map +1 -0
- package/dist/test/unit/token.js +37 -0
- package/dist/test/unit/transaction.d.ts +3 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +73 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.js +161 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushERC7984.js +292 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushNft.js +381 -0
- package/dist/test/unit/transactionBuilder/index.d.ts +7 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/index.js +23 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +197 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +11 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +137 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +76 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +214 -0
- package/dist/test/unit/zamaUtils.d.ts +2 -0
- package/dist/test/unit/zamaUtils.d.ts.map +1 -0
- package/dist/test/unit/zamaUtils.js +352 -0
- package/dist/tsconfig.tsbuildinfo +1 -8286
- package/package.json +34 -10
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -166
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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=
|