@bitgo-beta/abstract-eth 1.2.3-alpha.39 → 1.2.3-alpha.390
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/CHANGELOG.md +1760 -0
- package/dist/src/abstractEthLikeCoin.d.ts +18 -9
- package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
- package/dist/src/abstractEthLikeCoin.js +39 -15
- package/dist/src/abstractEthLikeNewCoins.d.ts +749 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
- package/dist/src/abstractEthLikeNewCoins.js +2229 -0
- package/dist/src/ethLikeToken.d.ts +36 -6
- package/dist/src/ethLikeToken.d.ts.map +1 -1
- package/dist/src/ethLikeToken.js +286 -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/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/iface.d.ts +133 -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 +16 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +57 -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 +67 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +142 -0
- package/dist/src/lib/transactionBuilder.d.ts +270 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +821 -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 +4 -0
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/index.js +20 -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 +16 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +81 -0
- package/dist/src/lib/types.d.ts +39 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +137 -0
- package/dist/src/lib/utils.d.ts +310 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +829 -0
- package/dist/src/lib/walletUtil.d.ts +40 -0
- package/dist/src/lib/walletUtil.d.ts.map +1 -0
- package/dist/src/lib/walletUtil.js +43 -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/index.d.ts +6 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +22 -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 +60 -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/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 +5 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/index.js +21 -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 +10 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +124 -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 +184 -0
- package/dist/tsconfig.tsbuildinfo +1 -8244
- package/index.ts +2 -0
- package/package.json +30 -9
|
@@ -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("./baseNFTTransferBuilder"), exports);
|
|
18
|
+
__exportStar(require("./transferBuilderERC1155"), exports);
|
|
19
|
+
__exportStar(require("./transferBuilderERC721"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zZmVyQnVpbGRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUF5QztBQUN6QywyREFBeUM7QUFDekMsMERBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyRVJDMTE1NSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zZmVyQnVpbGRlckVSQzcyMSc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseNFTTransferBuilder } from './baseNFTTransferBuilder';
|
|
2
|
+
export declare class ERC1155TransferBuilder extends BaseNFTTransferBuilder {
|
|
3
|
+
private _tokenIds;
|
|
4
|
+
private _values;
|
|
5
|
+
private _bytes;
|
|
6
|
+
constructor(serializedData?: string);
|
|
7
|
+
coin(coin: string): ERC1155TransferBuilder;
|
|
8
|
+
tokenContractAddress(address: string): ERC1155TransferBuilder;
|
|
9
|
+
entry(tokenId: number, value: number): ERC1155TransferBuilder;
|
|
10
|
+
bytes(bytesInNumber: number): ERC1155TransferBuilder;
|
|
11
|
+
getIsFirstSigner(): boolean;
|
|
12
|
+
signAndBuild(chainId: string): string;
|
|
13
|
+
private hasMandatoryFields;
|
|
14
|
+
private decodeTransferData;
|
|
15
|
+
build(): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=transferBuilderERC1155.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilderERC1155.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/transferBuilderERC1155.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,qBAAa,sBAAuB,SAAQ,sBAAsB;IAChE,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAEX,cAAc,CAAC,EAAE,MAAM;IAWnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB;IAM1C,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;IAQ7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAM7D,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,sBAAsB;IAKpD,gBAAgB,IAAI,OAAO;IAI3B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqBrC,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAe1B,KAAK,IAAI,MAAM;CAWhB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERC1155TransferBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const utils_1 = require("ethers/lib/utils");
|
|
6
|
+
const contractCall_1 = require("../contractCall");
|
|
7
|
+
const utils_2 = require("../utils");
|
|
8
|
+
const walletUtil_1 = require("../walletUtil");
|
|
9
|
+
const baseNFTTransferBuilder_1 = require("./baseNFTTransferBuilder");
|
|
10
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
11
|
+
class ERC1155TransferBuilder extends baseNFTTransferBuilder_1.BaseNFTTransferBuilder {
|
|
12
|
+
constructor(serializedData) {
|
|
13
|
+
super(serializedData);
|
|
14
|
+
this.bytes(0);
|
|
15
|
+
if (serializedData) {
|
|
16
|
+
this.decodeTransferData(serializedData);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this._tokenIds = [];
|
|
20
|
+
this._values = [];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
coin(coin) {
|
|
24
|
+
this._coin = statics_1.coins.get(coin);
|
|
25
|
+
this._nativeCoinOperationHashPrefix = this._coin.network.nativeCoinOperationHashPrefix;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
tokenContractAddress(address) {
|
|
29
|
+
if ((0, utils_2.isValidEthAddress)(address)) {
|
|
30
|
+
this._tokenContractAddress = address;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
34
|
+
}
|
|
35
|
+
entry(tokenId, value) {
|
|
36
|
+
this._tokenIds.push(tokenId.toString());
|
|
37
|
+
this._values.push(value.toString());
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
bytes(bytesInNumber) {
|
|
41
|
+
this._bytes = (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(bytesInNumber), 32);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
getIsFirstSigner() {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
signAndBuild(chainId) {
|
|
48
|
+
this._chainId = chainId;
|
|
49
|
+
const hasMandatoryFields = this.hasMandatoryFields();
|
|
50
|
+
if (hasMandatoryFields) {
|
|
51
|
+
this._data = this.build();
|
|
52
|
+
return (0, utils_2.sendMultiSigData)(this._tokenContractAddress, '0', // dummy amount value
|
|
53
|
+
this._data, this._expirationTime, this._sequenceId, this.getSignature());
|
|
54
|
+
}
|
|
55
|
+
throw new sdk_core_1.BuildTransactionError(`Missing transfer mandatory fields.
|
|
56
|
+
Destination (to) address, source (from) address, sequenceID, the token contract address, tokenIDs and their values are mandatory`);
|
|
57
|
+
}
|
|
58
|
+
hasMandatoryFields() {
|
|
59
|
+
return (this._tokenIds !== undefined &&
|
|
60
|
+
this._tokenIds.length !== 0 &&
|
|
61
|
+
this._values.length !== 0 &&
|
|
62
|
+
this._tokenIds.length === this._values.length &&
|
|
63
|
+
this._toAddress !== undefined &&
|
|
64
|
+
this._fromAddress !== undefined &&
|
|
65
|
+
this._tokenContractAddress !== undefined &&
|
|
66
|
+
this._sequenceId !== undefined);
|
|
67
|
+
}
|
|
68
|
+
decodeTransferData(data) {
|
|
69
|
+
const transferData = (0, utils_2.decodeERC1155TransferData)(data);
|
|
70
|
+
this._toAddress = transferData.to;
|
|
71
|
+
this._fromAddress = transferData.from;
|
|
72
|
+
this._expirationTime = transferData.expireTime;
|
|
73
|
+
this._sequenceId = transferData.sequenceId;
|
|
74
|
+
this._signature = transferData.signature;
|
|
75
|
+
this._tokenContractAddress = transferData.tokenContractAddress;
|
|
76
|
+
this._tokenIds = transferData.tokenIds;
|
|
77
|
+
this._values = transferData.values;
|
|
78
|
+
if (transferData.data) {
|
|
79
|
+
this._data = transferData.data;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
build() {
|
|
83
|
+
if (this._tokenIds.length === 1) {
|
|
84
|
+
const values = [this._fromAddress, this._toAddress, this._tokenIds[0], this._values[0], this._bytes];
|
|
85
|
+
const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC1155SafeTransferTypeMethodId, walletUtil_1.ERC1155SafeTransferTypes, values);
|
|
86
|
+
return contractCall.serialize();
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const values = [this._fromAddress, this._toAddress, this._tokenIds, this._values, this._bytes];
|
|
90
|
+
const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC1155BatchTransferTypeMethodId, walletUtil_1.ERC1155BatchTransferTypes, values);
|
|
91
|
+
return contractCall.serialize();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.ERC1155TransferBuilder = ERC1155TransferBuilder;
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyRVJDMTE1NS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJCdWlsZGVycy90cmFuc2ZlckJ1aWxkZXJFUkMxMTU1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUF5RjtBQUN6Riw0Q0FBdUQ7QUFFdkQsa0RBQStDO0FBQy9DLG9DQUEwRjtBQUMxRiw4Q0FLdUI7QUFDdkIscUVBQWtFO0FBQ2xFLGlEQUErRTtBQUUvRSxNQUFhLHNCQUF1QixTQUFRLCtDQUFzQjtJQUtoRSxZQUFZLGNBQXVCO1FBQ2pDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFZO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyw4QkFBOEIsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQTBCLENBQUMsNkJBQTZCLENBQUM7UUFDM0csT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZTtRQUNsQyxJQUFJLElBQUEseUJBQWlCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxxQ0FBMEIs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R0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sWUFBWSxHQUFHLElBQUksMkJBQVksQ0FBQyw0Q0FBK0IsRUFBRSxxQ0FBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RyxPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0YsTUFBTSxZQUFZLEdBQUcsSUFBSSwyQkFBWSxDQUFDLDZDQUFnQyxFQUFFLHNDQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNHLE9BQU8sWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF4R0Qsd0RBd0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGhleGxpZnksIGhleFplcm9QYWQgfSBmcm9tICdldGhlcnMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29udHJhY3RDYWxsIH0gZnJvbSAnLi4vY29udHJhY3RDYWxsJztcbmltcG9ydCB7IGRlY29kZUVSQzExNTVUcmFuc2ZlckRhdGEsIGlzVmFsaWRFdGhBZGRyZXNzLCBzZW5kTXVsdGlTaWdEYXRhIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRVJDMTE1NUJhdGNoVHJhbnNmZXJUeXBlcyxcbiAgRVJDMTE1NVNhZmVUcmFuc2ZlclR5cGVzLFxuICBFUkMxMTU1QmF0Y2hUcmFuc2ZlclR5cGVNZXRob2RJZCxcbiAgRVJDMTE1NVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCxcbn0gZnJvbSAnLi4vd2FsbGV0VXRpbCc7XG5pbXBvcnQgeyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIEVSQzExNTVUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW5JZHM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF92YWx1ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9ieXRlczogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWREYXRhPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2VyaWFsaXplZERhdGEpO1xuICAgIHRoaXMuYnl0ZXMoMCk7XG4gICAgaWYgKHNlcmlhbGl6ZWREYXRhKSB7XG4gICAgICB0aGlzLmRlY29kZVRyYW5zZmVyRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3Rva2VuSWRzID0gW107XG4gICAgICB0aGlzLl92YWx1ZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBjb2luKGNvaW46IHN0cmluZyk6IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX2NvaW4gPSBjb2lucy5nZXQoY29pbik7XG4gICAgdGhpcy5fbmF0aXZlQ29pbk9wZXJhdGlvbkhhc2hQcmVmaXggPSAodGhpcy5fY29pbi5uZXR3b3JrIGFzIEV0aExpa2VOZXR3b3JrKS5uYXRpdmVDb2luT3BlcmF0aW9uSGFzaFByZWZpeDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRva2VuQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXIge1xuICAgIGlmIChpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gIH1cblxuICBlbnRyeSh0b2tlbklkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBFUkMxMTU1VHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl90b2tlbklkcy5wdXNoKHRva2VuSWQudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdmFsdWVzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBieXRlcyhieXRlc0luTnVtYmVyOiBudW1iZXIpOiBFUkMxMTU1VHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9ieXRlcyA9IGhleFplcm9QYWQoaGV4bGlmeShieXRlc0luTnVtYmVyKSwgMzIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0SXNGaXJzdFNpZ25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzaWduQW5kQnVpbGQoY2hhaW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgICBjb25zdCBoYXNNYW5kYXRvcnlGaWVsZHMgPSB0aGlzLmhhc01hbmRhdG9yeUZpZWxkcygpO1xuICAgIGlmIChoYXNNYW5kYXRvcnlGaWVsZHMpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLmJ1aWxkKCk7XG5cbiAgICAgIHJldHVybiBzZW5kTXVsdGlTaWdEYXRhKFxuICAgICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgJzAnLCAvLyBkdW1teSBhbW91bnQgdmFsdWVcbiAgICAgICAgdGhpcy5fZGF0YSxcbiAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgIHRoaXMuZ2V0U2lnbmF0dXJlKClcbiAgICAgICk7XG4gICAgfVxuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgTWlzc2luZyB0cmFuc2ZlciBtYW5kYXRvcnkgZmllbGRzLiBcbiAgICAgICBEZXN0aW5hdGlvbiAodG8pIGFkZHJlc3MsIHNvdXJjZSAoZnJvbSkgYWRkcmVzcywgc2VxdWVuY2VJRCwgdGhlIHRva2VuIGNvbnRyYWN0IGFkZHJlc3MsIHRva2VuSURzIGFuZCB0aGVpciB2YWx1ZXMgYXJlIG1hbmRhdG9yeWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNNYW5kYXRvcnlGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3Rva2VuSWRzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuX3Rva2VuSWRzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdGhpcy5fdG9rZW5JZHMubGVuZ3RoID09PSB0aGlzLl92YWx1ZXMubGVuZ3RoICYmXG4gICAgICB0aGlzLl90b0FkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fZnJvbUFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fc2VxdWVuY2VJZCAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGRlY29kZVRyYW5zZmVyRGF0YShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlckRhdGEgPSBkZWNvZGVFUkMxMTU1VHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgIHRoaXMuX3RvQWRkcmVzcyA9IHRyYW5zZmVyRGF0YS50bztcbiAgICB0aGlzLl9mcm9tQWRkcmVzcyA9IHRyYW5zZmVyRGF0YS5mcm9tO1xuICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdHJhbnNmZXJEYXRhLmV4cGlyZVRpbWU7XG4gICAgdGhpcy5fc2VxdWVuY2VJZCA9IHRyYW5zZmVyRGF0YS5zZXF1ZW5jZUlkO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRyYW5zZmVyRGF0YS5zaWduYXR1cmU7XG4gICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSB0cmFuc2ZlckRhdGEudG9rZW5Db250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fdG9rZW5JZHMgPSB0cmFuc2ZlckRhdGEudG9rZW5JZHM7XG4gICAgdGhpcy5fdmFsdWVzID0gdHJhbnNmZXJEYXRhLnZhbHVlcztcbiAgICBpZiAodHJhbnNmZXJEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0cmFuc2ZlckRhdGEuZGF0YTtcbiAgICB9XG4gIH1cblxuICBidWlsZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl90b2tlbklkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFt0aGlzLl9mcm9tQWRkcmVzcywgdGhpcy5fdG9BZGRyZXNzLCB0aGlzLl90b2tlbklkc1swXSwgdGhpcy5fdmFsdWVzWzBdLCB0aGlzLl9ieXRlc107XG4gICAgICBjb25zdCBjb250cmFjdENhbGwgPSBuZXcgQ29udHJhY3RDYWxsKEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQsIEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlcywgdmFsdWVzKTtcbiAgICAgIHJldHVybiBjb250cmFjdENhbGwuc2VyaWFsaXplKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFt0aGlzLl9mcm9tQWRkcmVzcywgdGhpcy5fdG9BZGRyZXNzLCB0aGlzLl90b2tlbklkcywgdGhpcy5fdmFsdWVzLCB0aGlzLl9ieXRlc107XG4gICAgICBjb25zdCBjb250cmFjdENhbGwgPSBuZXcgQ29udHJhY3RDYWxsKEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZU1ldGhvZElkLCBFUkMxMTU1QmF0Y2hUcmFuc2ZlclR5cGVzLCB2YWx1ZXMpO1xuICAgICAgcmV0dXJuIGNvbnRyYWN0Q2FsbC5zZXJpYWxpemUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseNFTTransferBuilder } from './baseNFTTransferBuilder';
|
|
2
|
+
export declare class ERC721TransferBuilder extends BaseNFTTransferBuilder {
|
|
3
|
+
private _tokenId;
|
|
4
|
+
private _bytes;
|
|
5
|
+
constructor(serializedData?: string);
|
|
6
|
+
coin(coin: string): ERC721TransferBuilder;
|
|
7
|
+
tokenContractAddress(address: string): ERC721TransferBuilder;
|
|
8
|
+
tokenId(token: string): ERC721TransferBuilder;
|
|
9
|
+
bytes(bytesInNumber: number): ERC721TransferBuilder;
|
|
10
|
+
getIsFirstSigner(): boolean;
|
|
11
|
+
build(): string;
|
|
12
|
+
signAndBuild(chainId: string): string;
|
|
13
|
+
private hasMandatoryFields;
|
|
14
|
+
private decodeTransferData;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=transferBuilderERC721.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilderERC721.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/transferBuilderERC721.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,qBAAa,qBAAsB,SAAQ,sBAAsB;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,cAAc,CAAC,EAAE,MAAM;IAQnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB;IAMzC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAQ5D,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB;IAK7C,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IAKnD,gBAAgB,IAAI,OAAO;IAI3B,KAAK,IAAI,MAAM;IAOf,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqBrC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERC721TransferBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const utils_1 = require("ethers/lib/utils");
|
|
6
|
+
const contractCall_1 = require("../contractCall");
|
|
7
|
+
const utils_2 = require("../utils");
|
|
8
|
+
const baseNFTTransferBuilder_1 = require("./baseNFTTransferBuilder");
|
|
9
|
+
const walletUtil_1 = require("../walletUtil");
|
|
10
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
11
|
+
class ERC721TransferBuilder extends baseNFTTransferBuilder_1.BaseNFTTransferBuilder {
|
|
12
|
+
constructor(serializedData) {
|
|
13
|
+
super(serializedData);
|
|
14
|
+
this.bytes(0);
|
|
15
|
+
if (serializedData) {
|
|
16
|
+
this.decodeTransferData(serializedData);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
coin(coin) {
|
|
20
|
+
this._coin = statics_1.coins.get(coin);
|
|
21
|
+
this._nativeCoinOperationHashPrefix = this._coin.network.nativeCoinOperationHashPrefix;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
tokenContractAddress(address) {
|
|
25
|
+
if ((0, utils_2.isValidEthAddress)(address)) {
|
|
26
|
+
this._tokenContractAddress = address;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
30
|
+
}
|
|
31
|
+
tokenId(token) {
|
|
32
|
+
this._tokenId = token;
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
bytes(bytesInNumber) {
|
|
36
|
+
this._bytes = (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(bytesInNumber), 32);
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
getIsFirstSigner() {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
build() {
|
|
43
|
+
const types = walletUtil_1.ERC721SafeTransferTypes;
|
|
44
|
+
const values = [this._fromAddress, this._toAddress, this._tokenId, this._bytes];
|
|
45
|
+
const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC721SafeTransferTypeMethodId, types, values);
|
|
46
|
+
return contractCall.serialize();
|
|
47
|
+
}
|
|
48
|
+
signAndBuild(chainId) {
|
|
49
|
+
this._chainId = chainId;
|
|
50
|
+
if (this.hasMandatoryFields()) {
|
|
51
|
+
this._data = this.build();
|
|
52
|
+
return (0, utils_2.sendMultiSigData)(this._tokenContractAddress, // to
|
|
53
|
+
'0', // dummy amount value
|
|
54
|
+
this._data, this._expirationTime, this._sequenceId, this.getSignature());
|
|
55
|
+
}
|
|
56
|
+
throw new sdk_core_1.BuildTransactionError(`Missing transfer mandatory fields.
|
|
57
|
+
Destination (to) address, Source (from) address, sequenceID, the token contract address and tokenID are mandatory`);
|
|
58
|
+
}
|
|
59
|
+
hasMandatoryFields() {
|
|
60
|
+
return (this._tokenId !== undefined &&
|
|
61
|
+
this._toAddress !== undefined &&
|
|
62
|
+
this._fromAddress !== undefined &&
|
|
63
|
+
this._tokenContractAddress !== undefined &&
|
|
64
|
+
this._sequenceId !== undefined);
|
|
65
|
+
}
|
|
66
|
+
decodeTransferData(data) {
|
|
67
|
+
const transferData = (0, utils_2.decodeERC721TransferData)(data);
|
|
68
|
+
this._toAddress = transferData.to;
|
|
69
|
+
this._fromAddress = transferData.from;
|
|
70
|
+
this._expirationTime = transferData.expireTime;
|
|
71
|
+
this._sequenceId = transferData.sequenceId;
|
|
72
|
+
this._signature = transferData.signature;
|
|
73
|
+
this._tokenContractAddress = transferData.tokenContractAddress;
|
|
74
|
+
this._tokenId = transferData.tokenId;
|
|
75
|
+
if (transferData.data) {
|
|
76
|
+
this._data = transferData.data;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ERC721TransferBuilder = ERC721TransferBuilder;
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyRVJDNzIxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXJzL3RyYW5zZmVyQnVpbGRlckVSQzcyMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBeUY7QUFDekYsNENBQXVEO0FBRXZELGtEQUErQztBQUMvQyxvQ0FBeUY7QUFDekYscUVBQWtFO0FBQ2xFLDhDQUF3RjtBQUN4RixpREFBK0U7QUFFL0UsTUFBYSxxQkFBc0IsU0FBUSwrQ0FBc0I7SUFJL0QsWUFBWSxjQUF1QjtRQUNqQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLDhCQUE4QixHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBMEIsQ0FBQyw2QkFBNkIsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFlO1FBQ2xDLElBQUksSUFBQSx5QkFBaUIsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFxQjtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUEsa0JBQVUsRUFBQyxJQUFBLGVBQU8sRUFBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxLQUFLLEdBQUcsb0NBQXVCLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSwyQkFBWSxDQUFDLDJDQUE4QixFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRixPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTFCLE9BQU8sSUFBQSx3QkFBZ0IsRUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEtBQUs7WUFDakMsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FDcEIsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCO3lIQUNtSCxDQUNwSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQzNCLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUztZQUM3QixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVM7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixLQUFLLFNBQVM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBWTtRQUNyQyxNQUFNLFlBQVksR0FBRyxJQUFBLGdDQUF3QixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzRkQsc0RBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGhleGxpZnksIGhleFplcm9QYWQgfSBmcm9tICdldGhlcnMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29udHJhY3RDYWxsIH0gZnJvbSAnLi4vY29udHJhY3RDYWxsJztcbmltcG9ydCB7IGRlY29kZUVSQzcyMVRyYW5zZmVyRGF0YSwgaXNWYWxpZEV0aEFkZHJlc3MsIHNlbmRNdWx0aVNpZ0RhdGEgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEVSQzcyMVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCwgRVJDNzIxU2FmZVRyYW5zZmVyVHlwZXMgfSBmcm9tICcuLi93YWxsZXRVdGlsJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIEVSQzcyMVRyYW5zZmVyQnVpbGRlciBleHRlbmRzIEJhc2VORlRUcmFuc2ZlckJ1aWxkZXIge1xuICBwcml2YXRlIF90b2tlbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2J5dGVzOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzZXJpYWxpemVkRGF0YSk7XG4gICAgdGhpcy5ieXRlcygwKTtcbiAgICBpZiAoc2VyaWFsaXplZERhdGEpIHtcbiAgICAgIHRoaXMuZGVjb2RlVHJhbnNmZXJEYXRhKHNlcmlhbGl6ZWREYXRhKTtcbiAgICB9XG4gIH1cblxuICBjb2luKGNvaW46IHN0cmluZyk6IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fY29pbiA9IGNvaW5zLmdldChjb2luKTtcbiAgICB0aGlzLl9uYXRpdmVDb2luT3BlcmF0aW9uSGFzaFByZWZpeCA9ICh0aGlzLl9jb2luLm5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmspLm5hdGl2ZUNvaW5PcGVyYXRpb25IYXNoUHJlZml4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9rZW5Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAoaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgdG9rZW5JZCh0b2tlbjogc3RyaW5nKTogRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl90b2tlbklkID0gdG9rZW47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBieXRlcyhieXRlc0luTnVtYmVyOiBudW1iZXIpOiBFUkM3MjFUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX2J5dGVzID0gaGV4WmVyb1BhZChoZXhsaWZ5KGJ5dGVzSW5OdW1iZXIpLCAzMik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRJc0ZpcnN0U2lnbmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGJ1aWxkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXMgPSBFUkM3MjFTYWZlVHJhbnNmZXJUeXBlcztcbiAgICBjb25zdCB2YWx1ZXMgPSBbdGhpcy5fZnJvbUFkZHJlc3MsIHRoaXMuX3RvQWRkcmVzcywgdGhpcy5fdG9rZW5JZCwgdGhpcy5fYnl0ZXNdO1xuICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IG5ldyBDb250cmFjdENhbGwoRVJDNzIxU2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkLCB0eXBlcywgdmFsdWVzKTtcbiAgICByZXR1cm4gY29udHJhY3RDYWxsLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgc2lnbkFuZEJ1aWxkKGNoYWluSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5fY2hhaW5JZCA9IGNoYWluSWQ7XG4gICAgaWYgKHRoaXMuaGFzTWFuZGF0b3J5RmllbGRzKCkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLmJ1aWxkKCk7XG5cbiAgICAgIHJldHVybiBzZW5kTXVsdGlTaWdEYXRhKFxuICAgICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcywgLy8gdG9cbiAgICAgICAgJzAnLCAvLyBkdW1teSBhbW91bnQgdmFsdWVcbiAgICAgICAgdGhpcy5fZGF0YSxcbiAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgIHRoaXMuZ2V0U2lnbmF0dXJlKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBNaXNzaW5nIHRyYW5zZmVyIG1hbmRhdG9yeSBmaWVsZHMuIFxuICAgICAgIERlc3RpbmF0aW9uICh0bykgYWRkcmVzcywgU291cmNlIChmcm9tKSBhZGRyZXNzLCBzZXF1ZW5jZUlELCB0aGUgdG9rZW4gY29udHJhY3QgYWRkcmVzcyBhbmQgdG9rZW5JRCBhcmUgbWFuZGF0b3J5YFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhc01hbmRhdG9yeUZpZWxkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fdG9rZW5JZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl90b0FkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fZnJvbUFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fc2VxdWVuY2VJZCAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IGRlY29kZUVSQzcyMVRyYW5zZmVyRGF0YShkYXRhKTtcbiAgICB0aGlzLl90b0FkZHJlc3MgPSB0cmFuc2ZlckRhdGEudG87XG4gICAgdGhpcy5fZnJvbUFkZHJlc3MgPSB0cmFuc2ZlckRhdGEuZnJvbTtcbiAgICB0aGlzLl9leHBpcmF0aW9uVGltZSA9IHRyYW5zZmVyRGF0YS5leHBpcmVUaW1lO1xuICAgIHRoaXMuX3NlcXVlbmNlSWQgPSB0cmFuc2ZlckRhdGEuc2VxdWVuY2VJZDtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB0cmFuc2ZlckRhdGEuc2lnbmF0dXJlO1xuICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gdHJhbnNmZXJEYXRhLnRva2VuQ29udHJhY3RBZGRyZXNzO1xuICAgIHRoaXMuX3Rva2VuSWQgPSB0cmFuc2ZlckRhdGEudG9rZW5JZDtcbiAgICBpZiAodHJhbnNmZXJEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0cmFuc2ZlckRhdGEuZGF0YTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TypedTransaction } from '@ethereumjs/tx';
|
|
2
|
+
import EthereumCommon from '@ethereumjs/common';
|
|
3
|
+
import { EthLikeTransactionData, TxData } from './iface';
|
|
4
|
+
import { KeyPair } from './keyPair';
|
|
5
|
+
/**
|
|
6
|
+
* An Ethereum transaction with helpers for serialization and deserialization.
|
|
7
|
+
*/
|
|
8
|
+
export declare class EthTransactionData implements EthLikeTransactionData {
|
|
9
|
+
private tx;
|
|
10
|
+
protected args?: {
|
|
11
|
+
deployedAddress?: string;
|
|
12
|
+
chainId?: string;
|
|
13
|
+
};
|
|
14
|
+
constructor(tx: TypedTransaction, args?: {
|
|
15
|
+
deployedAddress?: string;
|
|
16
|
+
chainId?: string;
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Build an thereum transaction from its JSON representation
|
|
20
|
+
*
|
|
21
|
+
* @param {TxData} tx The JSON representation of the transaction
|
|
22
|
+
* @param {EthereumCommon} common Class to access chain and hardfork parameters
|
|
23
|
+
* @returns {EthTransactionData} a new ethereum transaction object
|
|
24
|
+
*/
|
|
25
|
+
static fromJson(tx: TxData, common: EthereumCommon): EthTransactionData;
|
|
26
|
+
/**
|
|
27
|
+
* Build an ethereum transaction from its string serialization
|
|
28
|
+
*
|
|
29
|
+
* @param tx The string serialization of the ethereum transaction
|
|
30
|
+
* @param common
|
|
31
|
+
*/
|
|
32
|
+
static fromSerialized(tx: string, common: EthereumCommon): EthTransactionData;
|
|
33
|
+
sign(keyPair: KeyPair): void;
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
toJson(): TxData;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
toSerialized(): string;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAA6B,sBAAsB,EAAoC,MAAM,EAAE,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAC/D,OAAO,CAAC,EAAE,CAAmB;IAC7B,SAAS,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEpD,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvF;;;;;;OAMG;WACW,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuC9E;;;;;OAKG;WACW,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAMpF,IAAI,CAAC,OAAO,EAAE,OAAO;IAKrB,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA2DhB,kBAAkB;IAClB,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EthTransactionData = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const tx_1 = require("@ethereumjs/tx");
|
|
10
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
11
|
+
const iface_1 = require("./iface");
|
|
12
|
+
// https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/tx/src/transactionFactory.ts#L31
|
|
13
|
+
const LEGACY_TX_TYPE = 0;
|
|
14
|
+
const EIP1559_TX_TYPE = 2;
|
|
15
|
+
/**
|
|
16
|
+
* An Ethereum transaction with helpers for serialization and deserialization.
|
|
17
|
+
*/
|
|
18
|
+
class EthTransactionData {
|
|
19
|
+
constructor(tx, args) {
|
|
20
|
+
this.tx = tx;
|
|
21
|
+
this.args = args;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build an thereum transaction from its JSON representation
|
|
25
|
+
*
|
|
26
|
+
* @param {TxData} tx The JSON representation of the transaction
|
|
27
|
+
* @param {EthereumCommon} common Class to access chain and hardfork parameters
|
|
28
|
+
* @returns {EthTransactionData} a new ethereum transaction object
|
|
29
|
+
*/
|
|
30
|
+
static fromJson(tx, common) {
|
|
31
|
+
const nonce = (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.nonce).toString(16));
|
|
32
|
+
const value = (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.value).toString(16));
|
|
33
|
+
const gasLimit = (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.gasLimit).toString(16));
|
|
34
|
+
const chainId = tx.chainId ? (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.chainId).toString(16)) : undefined;
|
|
35
|
+
const gasPrice = isLegacyTx(tx) ? (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.gasPrice).toString(16)) : undefined;
|
|
36
|
+
const maxFeePerGas = isEIP1559Txn(tx) ? (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.maxFeePerGas).toString(16)) : undefined;
|
|
37
|
+
const maxPriorityFeePerGas = isEIP1559Txn(tx)
|
|
38
|
+
? (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.maxPriorityFeePerGas).toString(16))
|
|
39
|
+
: undefined;
|
|
40
|
+
return new EthTransactionData(tx_1.TransactionFactory.fromTxData({
|
|
41
|
+
type: isLegacyTx(tx) ? LEGACY_TX_TYPE : EIP1559_TX_TYPE,
|
|
42
|
+
chainId,
|
|
43
|
+
nonce,
|
|
44
|
+
to: tx.to,
|
|
45
|
+
gasPrice,
|
|
46
|
+
gasLimit,
|
|
47
|
+
maxFeePerGas,
|
|
48
|
+
maxPriorityFeePerGas,
|
|
49
|
+
value,
|
|
50
|
+
data: tx.data,
|
|
51
|
+
v: tx.v,
|
|
52
|
+
r: tx.r,
|
|
53
|
+
s: tx.s,
|
|
54
|
+
}, { common: common }), {
|
|
55
|
+
deployedAddress: tx.deployedAddress,
|
|
56
|
+
chainId: (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(Number(tx.chainId)).toString(16)),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build an ethereum transaction from its string serialization
|
|
61
|
+
*
|
|
62
|
+
* @param tx The string serialization of the ethereum transaction
|
|
63
|
+
* @param common
|
|
64
|
+
*/
|
|
65
|
+
static fromSerialized(tx, common) {
|
|
66
|
+
return new EthTransactionData(tx_1.TransactionFactory.fromSerializedData((0, ethereumjs_util_1.toBuffer)((0, ethereumjs_util_1.addHexPrefix)(tx)), { common: common }));
|
|
67
|
+
}
|
|
68
|
+
sign(keyPair) {
|
|
69
|
+
const privateKey = Buffer.from(keyPair.getKeys().prv, 'hex');
|
|
70
|
+
this.tx = this.tx.sign(privateKey);
|
|
71
|
+
}
|
|
72
|
+
/** @inheritdoc */
|
|
73
|
+
toJson() {
|
|
74
|
+
const result = {
|
|
75
|
+
nonce: (0, ethereumjs_util_1.bufferToInt)((0, ethereumjs_util_1.toUnsigned)(this.tx.nonce)),
|
|
76
|
+
gasLimit: new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.gasLimit)), 16).toString(10),
|
|
77
|
+
value: this.tx.value.toString(10),
|
|
78
|
+
data: (0, ethereumjs_util_1.bufferToHex)(this.tx.data),
|
|
79
|
+
};
|
|
80
|
+
if (this.tx.isSigned()) {
|
|
81
|
+
result.id = (0, ethereumjs_util_1.addHexPrefix)((0, ethereumjs_util_1.bufferToHex)(this.tx.hash()));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
result.id = (0, ethereumjs_util_1.addHexPrefix)((0, ethereumjs_util_1.bufferToHex)(this.tx.getMessageToSign()));
|
|
85
|
+
}
|
|
86
|
+
if (this.tx.to) {
|
|
87
|
+
result.to = (0, ethereumjs_util_1.bufferToHex)(this.tx.to.toBuffer());
|
|
88
|
+
}
|
|
89
|
+
if (this.tx.verifySignature()) {
|
|
90
|
+
result.from = (0, ethereumjs_util_1.bufferToHex)(this.tx.getSenderAddress().toBuffer());
|
|
91
|
+
(0, assert_1.default)(this.tx.r != undefined);
|
|
92
|
+
result.r = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.r));
|
|
93
|
+
(0, assert_1.default)(this.tx.s != undefined);
|
|
94
|
+
result.s = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.s));
|
|
95
|
+
}
|
|
96
|
+
if (this.tx.v) {
|
|
97
|
+
result.v = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.v));
|
|
98
|
+
}
|
|
99
|
+
result.chainId = (0, ethereumjs_util_1.addHexPrefix)(this.tx.common.chainIdBN().toString(16));
|
|
100
|
+
if (this.args && this.args.deployedAddress) {
|
|
101
|
+
result.deployedAddress = this.args.deployedAddress;
|
|
102
|
+
}
|
|
103
|
+
if (this.tx instanceof tx_1.Transaction) {
|
|
104
|
+
const gasPrice = new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.gasPrice)), 16).toString(10);
|
|
105
|
+
return {
|
|
106
|
+
...result,
|
|
107
|
+
_type: iface_1.ETHTransactionType.LEGACY,
|
|
108
|
+
gasPrice,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
else if (this.tx instanceof tx_1.FeeMarketEIP1559Transaction) {
|
|
112
|
+
const maxFeePerGas = new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.maxFeePerGas)), 16).toString(10);
|
|
113
|
+
const maxPriorityFeePerGas = new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.toUnsigned)(this.tx.maxPriorityFeePerGas)), 16).toString(10);
|
|
114
|
+
return {
|
|
115
|
+
...result,
|
|
116
|
+
_type: iface_1.ETHTransactionType.EIP1559,
|
|
117
|
+
maxFeePerGas,
|
|
118
|
+
maxPriorityFeePerGas,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
throw new Error(`Unsupported tx type: ${tx_1.AccessListEIP2930Transaction.name}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** @inheritdoc */
|
|
126
|
+
toSerialized() {
|
|
127
|
+
return (0, ethereumjs_util_1.addHexPrefix)(this.tx.serialize().toString('hex'));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.EthTransactionData = EthTransactionData;
|
|
131
|
+
function isLegacyTx(tx) {
|
|
132
|
+
return tx._type === iface_1.ETHTransactionType.LEGACY;
|
|
133
|
+
}
|
|
134
|
+
function isEIP1559Txn(tx) {
|
|
135
|
+
return tx._type === iface_1.ETHTransactionType.EIP1559;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsdUNBTXdCO0FBRXhCLHFEQUErRjtBQUMvRixtQ0FBc0g7QUFHdEgsMEdBQTBHO0FBQzFHLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUI7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUk3QixZQUFZLEVBQW9CLEVBQUUsSUFBcUQ7UUFDckYsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFVLEVBQUUsTUFBc0I7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBQSw4QkFBWSxFQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsSUFBQSw4QkFBWSxFQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxRQUFRLEdBQUcsSUFBQSw4QkFBWSxFQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBQSw4QkFBWSxFQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FB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LElBQUEsNkJBQVcsRUFBQyxJQUFBLDRCQUFVLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRyxNQUFNLG9CQUFvQixHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFBLDZCQUFXLEVBQUMsSUFBQSw0QkFBVSxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FDNUcsRUFBRSxDQUNILENBQUM7WUFFRixPQUFPO2dCQUNMLEdBQUcsTUFBTTtnQkFDVCxLQUFLLEVBQUUsMEJBQWtCLENBQUMsT0FBTztnQkFDakMsWUFBWTtnQkFDWixvQkFBb0I7YUFDckIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsaUNBQTRCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZO1FBQ1YsT0FBTyxJQUFBLDhCQUFZLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUF4SUQsZ0RBd0lDO0FBRUQsU0FBUyxVQUFVLENBQUMsRUFBVTtJQUM1QixPQUFPLEVBQUUsQ0FBQyxLQUFLLEtBQUssMEJBQWtCLENBQUMsTUFBTSxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxFQUFVO0lBQzlCLE9BQU8sRUFBRSxDQUFDLEtBQUssS0FBSywwQkFBa0IsQ0FBQyxPQUFPLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRmFjdG9yeSxcbiAgVHlwZWRUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb24gYXMgTGVnYWN5VHJhbnNhY3Rpb24sXG4gIEZlZU1hcmtldEVJUDE1NTlUcmFuc2FjdGlvbixcbiAgQWNjZXNzTGlzdEVJUDI5MzBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQGV0aGVyZXVtanMvdHgnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgeyBidWZmZXJUb0hleCwgYnVmZmVyVG9JbnQsIHRvQnVmZmVyLCB0b1Vuc2lnbmVkLCBhZGRIZXhQcmVmaXggfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZVR4RGF0YSwgRUlQMTU1OVR4RGF0YSwgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSwgTGVnYWN5VHhEYXRhLCBFVEhUcmFuc2FjdGlvblR5cGUsIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bWpzL2V0aGVyZXVtanMtbW9ub3JlcG8vYmxvYi9tYXN0ZXIvcGFja2FnZXMvdHgvc3JjL3RyYW5zYWN0aW9uRmFjdG9yeS50cyNMMzFcbmNvbnN0IExFR0FDWV9UWF9UWVBFID0gMDtcbmNvbnN0IEVJUDE1NTlfVFhfVFlQRSA9IDI7XG5cbi8qKlxuICogQW4gRXRoZXJldW0gdHJhbnNhY3Rpb24gd2l0aCBoZWxwZXJzIGZvciBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBFdGhUcmFuc2FjdGlvbkRhdGEgaW1wbGVtZW50cyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhIHtcbiAgcHJpdmF0ZSB0eDogVHlwZWRUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIGFyZ3M/OiB7IGRlcGxveWVkQWRkcmVzcz86IHN0cmluZzsgY2hhaW5JZD86IHN0cmluZyB9O1xuXG4gIGNvbnN0cnVjdG9yKHR4OiBUeXBlZFRyYW5zYWN0aW9uLCBhcmdzPzogeyBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmc7IGNoYWluSWQ/OiBzdHJpbmcgfSkge1xuICAgIHRoaXMudHggPSB0eDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIHRoZXJldW0gdHJhbnNhY3Rpb24gZnJvbSBpdHMgSlNPTiByZXByZXNlbnRhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1R4RGF0YX0gdHggVGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7RXRoZXJldW1Db21tb259IGNvbW1vbiBDbGFzcyB0byBhY2Nlc3MgY2hhaW4gYW5kIGhhcmRmb3JrIHBhcmFtZXRlcnNcbiAgICogQHJldHVybnMge0V0aFRyYW5zYWN0aW9uRGF0YX0gYSBuZXcgZXRoZXJldW0gdHJhbnNhY3Rpb24gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uKHR4OiBUeERhdGEsIGNvbW1vbjogRXRoZXJldW1Db21tb24pOiBFdGhUcmFuc2FjdGlvbkRhdGEge1xuICAgIGNvbnN0IG5vbmNlID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgubm9uY2UpLnRvU3RyaW5nKDE2KSk7XG4gICAgY29uc3QgdmFsdWUgPSBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC52YWx1ZSkudG9TdHJpbmcoMTYpKTtcbiAgICBjb25zdCBnYXNMaW1pdCA9IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lmdhc0xpbWl0KS50b1N0cmluZygxNikpO1xuICAgIGNvbnN0IGNoYWluSWQgPSB0eC5jaGFpbklkID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHguY2hhaW5JZCkudG9TdHJpbmcoMTYpKSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGdhc1ByaWNlID0gaXNMZWdhY3lUeCh0eCkgPyBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNQcmljZSkudG9TdHJpbmcoMTYpKSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG1heEZlZVBlckdhcyA9IGlzRUlQMTU1OVR4bih0eCkgPyBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5tYXhGZWVQZXJHYXMpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4UHJpb3JpdHlGZWVQZXJHYXMgPSBpc0VJUDE1NTlUeG4odHgpXG4gICAgICA/IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lm1heFByaW9yaXR5RmVlUGVyR2FzKS50b1N0cmluZygxNikpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgRXRoVHJhbnNhY3Rpb25EYXRhKFxuICAgICAgVHJhbnNhY3Rpb25GYWN0b3J5LmZyb21UeERhdGEoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBpc0xlZ2FjeVR4KHR4KSA/IExFR0FDWV9UWF9UWVBFIDogRUlQMTU1OV9UWF9UWVBFLFxuICAgICAgICAgIGNoYWluSWQsXG4gICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgdG86IHR4LnRvLFxuICAgICAgICAgIGdhc1ByaWNlLFxuICAgICAgICAgIGdhc0xpbWl0LFxuICAgICAgICAgIG1heEZlZVBlckdhcyxcbiAgICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhcyxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBkYXRhOiB0eC5kYXRhLFxuICAgICAgICAgIHY6IHR4LnYsXG4gICAgICAgICAgcjogdHgucixcbiAgICAgICAgICBzOiB0eC5zLFxuICAgICAgICB9LFxuICAgICAgICB7IGNvbW1vbjogY29tbW9uIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGRlcGxveWVkQWRkcmVzczogdHguZGVwbG95ZWRBZGRyZXNzLFxuICAgICAgICBjaGFpbklkOiBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcihOdW1iZXIodHguY2hhaW5JZCkpLnRvU3RyaW5nKDE2KSksXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiBldGhlcmV1bSB0cmFuc2FjdGlvbiBmcm9tIGl0cyBzdHJpbmcgc2VyaWFsaXphdGlvblxuICAgKlxuICAgKiBAcGFyYW0gdHggVGhlIHN0cmluZyBzZXJpYWxpemF0aW9uIG9mIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gY29tbW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKHR4OiBzdHJpbmcsIGNvbW1vbjogRXRoZXJldW1Db21tb24pOiBFdGhUcmFuc2FjdGlvbkRhdGEge1xuICAgIHJldHVybiBuZXcgRXRoVHJhbnNhY3Rpb25EYXRhKFxuICAgICAgVHJhbnNhY3Rpb25GYWN0b3J5LmZyb21TZXJpYWxpemVkRGF0YSh0b0J1ZmZlcihhZGRIZXhQcmVmaXgodHgpKSwgeyBjb21tb246IGNvbW1vbiB9KVxuICAgICk7XG4gIH1cblxuICBzaWduKGtleVBhaXI6IEtleVBhaXIpIHtcbiAgICBjb25zdCBwcml2YXRlS2V5ID0gQnVmZmVyLmZyb20oa2V5UGFpci5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZywgJ2hleCcpO1xuICAgIHRoaXMudHggPSB0aGlzLnR4LnNpZ24ocHJpdmF0ZUtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgY29uc3QgcmVzdWx0OiBCYXNlVHhEYXRhID0ge1xuICAgICAgbm9uY2U6IGJ1ZmZlclRvSW50KHRvVW5zaWduZWQodGhpcy50eC5ub25jZSkpLFxuICAgICAgZ2FzTGltaXQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodG9VbnNpZ25lZCh0aGlzLnR4Lmdhc0xpbWl0KSksIDE2KS50b1N0cmluZygxMCksXG4gICAgICB2YWx1ZTogdGhpcy50eC52YWx1ZS50b1N0cmluZygxMCksXG4gICAgICBkYXRhOiBidWZmZXJUb0hleCh0aGlzLnR4LmRhdGEpLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy50eC5pc1NpZ25lZCgpKSB7XG4gICAgICByZXN1bHQuaWQgPSBhZGRIZXhQcmVmaXgoYnVmZmVyVG9IZXgodGhpcy50eC5oYXNoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LmlkID0gYWRkSGV4UHJlZml4KGJ1ZmZlclRvSGV4KHRoaXMudHguZ2V0TWVzc2FnZVRvU2lnbigpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHgudG8pIHtcbiAgICAgIHJlc3VsdC50byA9IGJ1ZmZlclRvSGV4KHRoaXMudHgudG8udG9CdWZmZXIoKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHgudmVyaWZ5U2lnbmF0dXJlKCkpIHtcbiAgICAgIHJlc3VsdC5mcm9tID0gYnVmZmVyVG9IZXgodGhpcy50eC5nZXRTZW5kZXJBZGRyZXNzKCkudG9CdWZmZXIoKSk7XG4gICAgICBhc3NlcnQodGhpcy50eC5yICE9IHVuZGVmaW5lZCk7XG4gICAgICByZXN1bHQuciA9IGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC5yKSk7XG4gICAgICBhc3NlcnQodGhpcy50eC5zICE9IHVuZGVmaW5lZCk7XG4gICAgICByZXN1bHQucyA9IGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC5zKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR4LnYpIHtcbiAgICAgIHJlc3VsdC52ID0gYnVmZmVyVG9IZXgodG9VbnNpZ25lZCh0aGlzLnR4LnYpKTtcbiAgICB9XG4gICAgcmVzdWx0LmNoYWluSWQgPSBhZGRIZXhQcmVmaXgodGhpcy50eC5jb21tb24uY2hhaW5JZEJOKCkudG9TdHJpbmcoMTYpKTtcblxuICAgIGlmICh0aGlzLmFyZ3MgJiYgdGhpcy5hcmdzLmRlcGxveWVkQWRkcmVzcykge1xuICAgICAgcmVzdWx0LmRlcGxveWVkQWRkcmVzcyA9IHRoaXMuYXJncy5kZXBsb3llZEFkZHJlc3M7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiBMZWdhY3lUcmFuc2FjdGlvbikge1xuICAgICAgY29uc3QgZ2FzUHJpY2UgPSBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC5nYXNQcmljZSkpLCAxNikudG9TdHJpbmcoMTApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgIF90eXBlOiBFVEhUcmFuc2FjdGlvblR5cGUuTEVHQUNZLFxuICAgICAgICBnYXNQcmljZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uKSB7XG4gICAgICBjb25zdCBtYXhGZWVQZXJHYXMgPSBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRvVW5zaWduZWQodGhpcy50eC5tYXhGZWVQZXJHYXMpKSwgMTYpLnRvU3RyaW5nKDEwKTtcbiAgICAgIGNvbnN0IG1heFByaW9yaXR5RmVlUGVyR2FzID0gbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0b1Vuc2lnbmVkKHRoaXMudHgubWF4UHJpb3JpdHlGZWVQZXJHYXMpKSwgMTYpLnRvU3RyaW5nKFxuICAgICAgICAxMFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTksXG4gICAgICAgIG1heEZlZVBlckdhcyxcbiAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR4IHR5cGU6ICR7QWNjZXNzTGlzdEVJUDI5MzBUcmFuc2FjdGlvbi5uYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b1NlcmlhbGl6ZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KHRoaXMudHguc2VyaWFsaXplKCkudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0xlZ2FjeVR4KHR4OiBUeERhdGEpOiB0eCBpcyBMZWdhY3lUeERhdGEge1xuICByZXR1cm4gdHguX3R5cGUgPT09IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1k7XG59XG5cbmZ1bmN0aW9uIGlzRUlQMTU1OVR4bih0eDogVHhEYXRhKTogdHggaXMgRUlQMTU1OVR4RGF0YSB7XG4gIHJldHVybiB0eC5fdHlwZSA9PT0gRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTk7XG59XG4iXX0=
|