@bitgo-beta/abstract-eth 1.0.2-beta.54 → 1.0.2-beta.541

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +1269 -0
  2. package/dist/src/abstractEthLikeCoin.d.ts +10 -5
  3. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
  4. package/dist/src/abstractEthLikeCoin.js +14 -11
  5. package/dist/src/abstractEthLikeNewCoins.d.ts +625 -0
  6. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  7. package/dist/src/abstractEthLikeNewCoins.js +1833 -0
  8. package/dist/src/ethLikeToken.d.ts +34 -4
  9. package/dist/src/ethLikeToken.d.ts.map +1 -1
  10. package/dist/src/ethLikeToken.js +281 -7
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +8 -2
  14. package/dist/src/lib/contractCall.d.ts +8 -0
  15. package/dist/src/lib/contractCall.d.ts.map +1 -0
  16. package/dist/src/lib/contractCall.js +17 -0
  17. package/dist/src/lib/iface.d.ts +132 -0
  18. package/dist/src/lib/iface.d.ts.map +1 -0
  19. package/dist/src/lib/iface.js +8 -0
  20. package/dist/src/lib/index.d.ts +15 -0
  21. package/dist/src/lib/index.d.ts.map +1 -0
  22. package/dist/src/lib/index.js +46 -0
  23. package/dist/src/lib/keyPair.d.ts +26 -0
  24. package/dist/src/lib/keyPair.d.ts.map +1 -0
  25. package/dist/src/lib/keyPair.js +66 -0
  26. package/dist/src/lib/transaction.d.ts +64 -0
  27. package/dist/src/lib/transaction.d.ts.map +1 -0
  28. package/dist/src/lib/transaction.js +137 -0
  29. package/dist/src/lib/transactionBuilder.d.ts +239 -0
  30. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/transactionBuilder.js +718 -0
  32. package/dist/src/lib/transferBuilder.d.ts +67 -0
  33. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  34. package/dist/src/lib/transferBuilder.js +246 -0
  35. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +52 -0
  36. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  37. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +114 -0
  38. package/dist/src/lib/transferBuilders/index.d.ts +4 -0
  39. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  40. package/dist/src/lib/transferBuilders/index.js +20 -0
  41. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +16 -0
  42. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  43. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +93 -0
  44. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +15 -0
  45. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  46. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +78 -0
  47. package/dist/src/lib/types.d.ts +39 -0
  48. package/dist/src/lib/types.d.ts.map +1 -0
  49. package/dist/src/lib/types.js +137 -0
  50. package/dist/src/lib/utils.d.ts +263 -0
  51. package/dist/src/lib/utils.d.ts.map +1 -0
  52. package/dist/src/lib/utils.js +681 -0
  53. package/dist/src/lib/walletUtil.d.ts +30 -0
  54. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  55. package/dist/src/lib/walletUtil.js +33 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -7922
  57. package/package.json +24 -9
@@ -0,0 +1,67 @@
1
+ /// <reference types="node" />
2
+ /** ETH transfer builder */
3
+ export declare class TransferBuilder {
4
+ private readonly _EMPTY_HEX_VALUE;
5
+ protected _amount: string;
6
+ protected _toAddress: string;
7
+ protected _sequenceId: number;
8
+ protected _signKey: string;
9
+ protected _expirationTime: number;
10
+ protected _signature: string;
11
+ private _data;
12
+ private _tokenContractAddress?;
13
+ private _coin;
14
+ private _chainId?;
15
+ private _coinUsesNonPackedEncodingForTxData?;
16
+ constructor(serializedData?: string);
17
+ /**
18
+ * A method to set the native coin or ERC20 token to be transferred.
19
+ * This ERC20 token may not be compatible with the network.
20
+ *
21
+ * @param {string} coin - the native coin or ERC20 token to be set
22
+ * @returns {TransferBuilder} the transfer builder instance modified
23
+ */
24
+ coin(coin: string): TransferBuilder;
25
+ data(additionalData: string): TransferBuilder;
26
+ amount(amount: string): this;
27
+ to(address: string): TransferBuilder;
28
+ contractSequenceId(counter: number): TransferBuilder;
29
+ key(signKey: string): TransferBuilder;
30
+ expirationTime(date: number): TransferBuilder;
31
+ signAndBuild(chainId?: string, coinUsesNonPackedEncodingForTxData?: boolean): string;
32
+ private hasMandatoryFields;
33
+ /**
34
+ * Obtains the proper operation hash to sign either a sendMultiSig data
35
+ * or a sendMultiSigToken data
36
+ *
37
+ * @returns {string} the operation hash
38
+ */
39
+ private getOperationHash;
40
+ protected getOperationData(): (string | Buffer)[][];
41
+ /**
42
+ * Get the prefix used in generating an operation hash for sending tokens
43
+ *
44
+ * @returns the string prefix
45
+ */
46
+ protected getTokenOperationHashPrefix(): string;
47
+ /**
48
+ * Get the prefix used in generating an operation hash for sending native coins
49
+ *
50
+ * @returns the string prefix
51
+ */
52
+ protected getNativeOperationHashPrefix(): string;
53
+ /** Return an expiration time, in seconds, set to one hour from now
54
+ *
55
+ * @returns {number} expiration time
56
+ */
57
+ private getExpirationTime;
58
+ /**
59
+ * If a signing key is set for this builder, recalculates the signature
60
+ *
61
+ * @returns {string} the signature value
62
+ */
63
+ protected getSignature(): string;
64
+ protected ethSignMsgHash(): string;
65
+ private decodeTransferData;
66
+ }
67
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":";AAQA,2BAA2B;AAC3B,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,mCAAmC,CAAC,CAAU;gBAE1C,cAAc,CAAC,EAAE,MAAM;IAWnC;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IASnC,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe;IAM7C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS5B,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IASpC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IASpD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAKrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAS7C,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,kCAAkC,CAAC,EAAE,OAAO,GAAG,MAAM;IAiCpF,OAAO,CAAC,kBAAkB;IAI1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAiBxB,SAAS,CAAC,gBAAgB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;IAiCnD;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C;;;;OAIG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;IAIhD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM;IAOhC,SAAS,CAAC,cAAc,IAAI,MAAM;IAoBlC,OAAO,CAAC,kBAAkB;CAiB3B"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.TransferBuilder = void 0;
30
+ const ethUtil = __importStar(require("ethereumjs-util"));
31
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
32
+ const bn_js_1 = __importDefault(require("bn.js"));
33
+ const statics_1 = require("@bitgo-beta/statics");
34
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
35
+ const utils_1 = require("./utils");
36
+ const utils_2 = require("ethers/lib/utils");
37
+ /** ETH transfer builder */
38
+ class TransferBuilder {
39
+ constructor(serializedData) {
40
+ this._EMPTY_HEX_VALUE = '0x';
41
+ if (serializedData) {
42
+ this.decodeTransferData(serializedData);
43
+ }
44
+ else {
45
+ // initialize with default values for non mandatory fields
46
+ this._expirationTime = this.getExpirationTime();
47
+ this._data = this._EMPTY_HEX_VALUE;
48
+ this._signature = this._EMPTY_HEX_VALUE;
49
+ }
50
+ }
51
+ /**
52
+ * A method to set the native coin or ERC20 token to be transferred.
53
+ * This ERC20 token may not be compatible with the network.
54
+ *
55
+ * @param {string} coin - the native coin or ERC20 token to be set
56
+ * @returns {TransferBuilder} the transfer builder instance modified
57
+ */
58
+ coin(coin) {
59
+ this._coin = statics_1.coins.get(coin);
60
+ if (this._coin instanceof statics_1.ContractAddressDefinedToken) {
61
+ this._tokenContractAddress = this._coin.contractAddress.toString();
62
+ }
63
+ return this;
64
+ }
65
+ data(additionalData) {
66
+ this._signature = this._EMPTY_HEX_VALUE;
67
+ this._data = additionalData;
68
+ return this;
69
+ }
70
+ amount(amount) {
71
+ if (!(0, utils_1.isValidAmount)(amount)) {
72
+ throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
73
+ }
74
+ this._signature = this._EMPTY_HEX_VALUE;
75
+ this._amount = amount;
76
+ return this;
77
+ }
78
+ to(address) {
79
+ if ((0, utils_1.isValidEthAddress)(address)) {
80
+ this._signature = this._EMPTY_HEX_VALUE;
81
+ this._toAddress = address;
82
+ return this;
83
+ }
84
+ throw new sdk_core_1.InvalidParameterValueError('Invalid address');
85
+ }
86
+ contractSequenceId(counter) {
87
+ if (counter >= 0) {
88
+ this._signature = this._EMPTY_HEX_VALUE;
89
+ this._sequenceId = counter;
90
+ return this;
91
+ }
92
+ throw new sdk_core_1.InvalidParameterValueError('Invalid contract sequence id');
93
+ }
94
+ key(signKey) {
95
+ this._signKey = signKey;
96
+ return this;
97
+ }
98
+ expirationTime(date) {
99
+ if (date > 0) {
100
+ this._signature = this._EMPTY_HEX_VALUE;
101
+ this._expirationTime = date;
102
+ return this;
103
+ }
104
+ throw new sdk_core_1.InvalidParameterValueError('Invalid expiration time');
105
+ }
106
+ signAndBuild(chainId, coinUsesNonPackedEncodingForTxData) {
107
+ this._chainId = chainId;
108
+ // If the coin uses non-packed encoding for tx data, the operation hash is calculated differently
109
+ // This new encoding type is applicable only for native coins and not tokens
110
+ this._coinUsesNonPackedEncodingForTxData =
111
+ coinUsesNonPackedEncodingForTxData && this._tokenContractAddress === undefined;
112
+ if (this.hasMandatoryFields()) {
113
+ if (this._tokenContractAddress !== undefined) {
114
+ return (0, utils_1.sendMultiSigTokenData)(this._toAddress, this._amount, this._tokenContractAddress, this._expirationTime, this._sequenceId, this.getSignature());
115
+ }
116
+ else {
117
+ return (0, utils_1.sendMultiSigData)(this._toAddress, this._amount, this._data, this._expirationTime, this._sequenceId, this.getSignature());
118
+ }
119
+ }
120
+ throw new sdk_core_1.BuildTransactionError('Missing transfer mandatory fields. Amount, destination (to) address and sequenceID are mandatory');
121
+ }
122
+ hasMandatoryFields() {
123
+ return this._amount !== undefined && this._toAddress !== undefined && this._sequenceId !== undefined;
124
+ }
125
+ /**
126
+ * Obtains the proper operation hash to sign either a sendMultiSig data
127
+ * or a sendMultiSigToken data
128
+ *
129
+ * @returns {string} the operation hash
130
+ */
131
+ getOperationHash() {
132
+ const operationData = this.getOperationData();
133
+ let operationHash;
134
+ if (this._coinUsesNonPackedEncodingForTxData) {
135
+ const types = operationData[0];
136
+ const values = operationData[1].map((item) => item instanceof Buffer ? '0x' + item.toString('hex') : item);
137
+ operationHash = (0, utils_2.keccak256)(utils_2.defaultAbiCoder.encode(types, values));
138
+ }
139
+ else {
140
+ // If the coin uses packed encoding for tx data or it is a token, the operation hash is calculated using the Ethereum ABI
141
+ operationHash = ethUtil.bufferToHex(ethereumjs_abi_1.default.soliditySHA3(...operationData));
142
+ }
143
+ return operationHash;
144
+ }
145
+ getOperationData() {
146
+ let operationData;
147
+ if (this._tokenContractAddress !== undefined) {
148
+ operationData = [
149
+ ['string', 'address', 'uint', 'address', 'uint', 'uint'],
150
+ [
151
+ this.getTokenOperationHashPrefix(),
152
+ new bn_js_1.default(ethUtil.stripHexPrefix(this._toAddress), 16),
153
+ this._amount,
154
+ new bn_js_1.default(ethUtil.stripHexPrefix(this._tokenContractAddress), 16),
155
+ this._expirationTime,
156
+ this._sequenceId,
157
+ ],
158
+ ];
159
+ }
160
+ else {
161
+ const toAddress = this._coinUsesNonPackedEncodingForTxData
162
+ ? this._toAddress
163
+ : new bn_js_1.default(ethUtil.stripHexPrefix(this._toAddress), 16);
164
+ operationData = [
165
+ ['string', 'address', 'uint', 'bytes', 'uint', 'uint'],
166
+ [
167
+ this.getNativeOperationHashPrefix(),
168
+ toAddress,
169
+ this._amount,
170
+ Buffer.from(ethUtil.padToEven(ethUtil.stripHexPrefix(this._data)) || '', 'hex'),
171
+ this._expirationTime,
172
+ this._sequenceId,
173
+ ],
174
+ ];
175
+ }
176
+ return operationData;
177
+ }
178
+ /**
179
+ * Get the prefix used in generating an operation hash for sending tokens
180
+ *
181
+ * @returns the string prefix
182
+ */
183
+ getTokenOperationHashPrefix() {
184
+ var _a, _b, _c, _d;
185
+ return (_d = (_c = (_b = (_a = this._coin) === null || _a === void 0 ? void 0 : _a.network) === null || _b === void 0 ? void 0 : _b.tokenOperationHashPrefix) !== null && _c !== void 0 ? _c : `${this._chainId}-ERC20`) !== null && _d !== void 0 ? _d : 'ERC20';
186
+ }
187
+ /**
188
+ * Get the prefix used in generating an operation hash for sending native coins
189
+ *
190
+ * @returns the string prefix
191
+ */
192
+ getNativeOperationHashPrefix() {
193
+ var _a, _b, _c, _d;
194
+ return (_d = (_c = (_b = (_a = this._coin) === null || _a === void 0 ? void 0 : _a.network) === null || _b === void 0 ? void 0 : _b.nativeCoinOperationHashPrefix) !== null && _c !== void 0 ? _c : `${this._chainId}`) !== null && _d !== void 0 ? _d : 'ETHER';
195
+ }
196
+ /** Return an expiration time, in seconds, set to one hour from now
197
+ *
198
+ * @returns {number} expiration time
199
+ */
200
+ getExpirationTime() {
201
+ const currentDate = new Date();
202
+ currentDate.setHours(currentDate.getHours() + 1);
203
+ return currentDate.getTime() / 1000;
204
+ }
205
+ /**
206
+ * If a signing key is set for this builder, recalculates the signature
207
+ *
208
+ * @returns {string} the signature value
209
+ */
210
+ getSignature() {
211
+ if (this._signKey) {
212
+ this._signature = this.ethSignMsgHash();
213
+ }
214
+ return this._signature;
215
+ }
216
+ ethSignMsgHash() {
217
+ const data = this.getOperationHash();
218
+ const keyBuffer = Buffer.from(ethUtil.padToEven(this._signKey), 'hex');
219
+ if (keyBuffer.length !== 32) {
220
+ throw new Error('private key length is invalid');
221
+ }
222
+ const signatureInParts = ethUtil.ecsign(Buffer.from(ethUtil.padToEven(ethUtil.stripHexPrefix(data)), 'hex'), keyBuffer);
223
+ // Assemble strings from r, s and v
224
+ const r = ethUtil.setLengthLeft(signatureInParts.r, 32).toString('hex');
225
+ const s = ethUtil.setLengthLeft(signatureInParts.s, 32).toString('hex');
226
+ const v = ethUtil.stripHexPrefix(ethUtil.intToHex(signatureInParts.v));
227
+ // Concatenate the r, s and v parts to make the signature string
228
+ return ethUtil.addHexPrefix(r.concat(s, v));
229
+ }
230
+ decodeTransferData(data) {
231
+ const transferData = (0, utils_1.decodeTransferData)(data);
232
+ this._toAddress = transferData.to;
233
+ this._amount = transferData.amount;
234
+ this._expirationTime = transferData.expireTime;
235
+ this._sequenceId = transferData.sequenceId;
236
+ this._signature = transferData.signature;
237
+ if (transferData.data) {
238
+ this._data = transferData.data;
239
+ }
240
+ if (transferData.tokenContractAddress) {
241
+ this._tokenContractAddress = transferData.tokenContractAddress;
242
+ }
243
+ }
244
+ }
245
+ exports.TransferBuilder = TransferBuilder;
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMkM7QUFDM0Msb0VBQXlDO0FBQ3pDLGtEQUF1QjtBQUN2QixpREFBc0g7QUFDdEgsbURBQXlGO0FBQ3pGLG1DQUF3SDtBQUN4SCw0Q0FBOEQ7QUFFOUQsMkJBQTJCO0FBQzNCLE1BQWEsZUFBZTtJQWMxQixZQUFZLGNBQXVCO1FBYmxCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWN2QyxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNMLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBQyxJQUFZO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSxxQ0FBMkIsRUFBRTtZQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDcEU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsY0FBc0I7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDeEMsSUFB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anMtdXRpbCc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IEJOIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IGNvaW5zLCBCYXNlQ29pbiwgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBFdGhlcmV1bU5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBkZWNvZGVUcmFuc2ZlckRhdGEsIHNlbmRNdWx0aVNpZ0RhdGEsIHNlbmRNdWx0aVNpZ1Rva2VuRGF0YSwgaXNWYWxpZEV0aEFkZHJlc3MsIGlzVmFsaWRBbW91bnQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGRlZmF1bHRBYmlDb2Rlciwga2VjY2FrMjU2IH0gZnJvbSAnZXRoZXJzL2xpYi91dGlscyc7XG5cbi8qKiBFVEggdHJhbnNmZXIgYnVpbGRlciAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX0VNUFRZX0hFWF9WQUxVRSA9ICcweCc7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdG9BZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2VxdWVuY2VJZDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25LZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9leHBpcmF0aW9uVGltZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogc3RyaW5nO1xuICBwcml2YXRlIF9kYXRhOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuQ29udHJhY3RBZGRyZXNzPzogc3RyaW5nO1xuICBwcml2YXRlIF9jb2luOiBSZWFkb25seTxCYXNlQ29pbj47XG4gIHByaXZhdGUgX2NoYWluSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGE/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWREYXRhPzogc3RyaW5nKSB7XG4gICAgaWYgKHNlcmlhbGl6ZWREYXRhKSB7XG4gICAgICB0aGlzLmRlY29kZVRyYW5zZmVyRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxpemUgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3Igbm9uIG1hbmRhdG9yeSBmaWVsZHNcbiAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdGhpcy5nZXRFeHBpcmF0aW9uVGltZSgpO1xuICAgICAgdGhpcy5fZGF0YSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gc2V0IHRoZSBuYXRpdmUgY29pbiBvciBFUkMyMCB0b2tlbiB0byBiZSB0cmFuc2ZlcnJlZC5cbiAgICogVGhpcyBFUkMyMCB0b2tlbiBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbmV0d29yay5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvaW4gLSB0aGUgbmF0aXZlIGNvaW4gb3IgRVJDMjAgdG9rZW4gdG8gYmUgc2V0XG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSB0cmFuc2ZlciBidWlsZGVyIGluc3RhbmNlIG1vZGlmaWVkXG4gICAqL1xuICBjb2luKGNvaW46IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fY29pbiA9IGNvaW5zLmdldChjb2luKTtcbiAgICBpZiAodGhpcy5fY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSB0aGlzLl9jb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGF0YShhZGRpdGlvbmFsRGF0YTogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgdGhpcy5fZGF0YSA9IGFkZGl0aW9uYWxEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYW1vdW50KGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkQW1vdW50KGFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhbW91bnQnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvKGFkZHJlc3M6IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKGlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl90b0FkZHJlc3MgPSBhZGRyZXNzO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gIH1cblxuICBjb250cmFjdFNlcXVlbmNlSWQoY291bnRlcjogbnVtYmVyKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAoY291bnRlciA+PSAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl9zZXF1ZW5jZUlkID0gY291bnRlcjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgY29udHJhY3Qgc2VxdWVuY2UgaWQnKTtcbiAgfVxuXG4gIGtleShzaWduS2V5OiBzdHJpbmcpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX3NpZ25LZXkgPSBzaWduS2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZXhwaXJhdGlvblRpbWUoZGF0ZTogbnVtYmVyKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAoZGF0ZSA+IDApIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gZGF0ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgZXhwaXJhdGlvbiB0aW1lJyk7XG4gIH1cblxuICBzaWduQW5kQnVpbGQoY2hhaW5JZD86IHN0cmluZywgY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHRoaXMuX2NoYWluSWQgPSBjaGFpbklkO1xuXG4gICAgLy8gSWYgdGhlIGNvaW4gdXNlcyBub24tcGFja2VkIGVuY29kaW5nIGZvciB0eCBkYXRhLCB0aGUgb3BlcmF0aW9uIGhhc2ggaXMgY2FsY3VsYXRlZCBkaWZmZXJlbnRseVxuICAgIC8vIFRoaXMgbmV3IGVuY29kaW5nIHR5cGUgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBuYXRpdmUgY29pbnMgYW5kIG5vdCB0b2tlbnNcbiAgICB0aGlzLl9jb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhID1cbiAgICAgIGNvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGEgJiYgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPT09IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5oYXNNYW5kYXRvcnlGaWVsZHMoKSkge1xuICAgICAgaWYgKHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRNdWx0aVNpZ1Rva2VuRGF0YShcbiAgICAgICAgICB0aGlzLl90b0FkZHJlc3MsXG4gICAgICAgICAgdGhpcy5fYW1vdW50LFxuICAgICAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lLFxuICAgICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgICAgdGhpcy5nZXRTaWduYXR1cmUoKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNlbmRNdWx0aVNpZ0RhdGEoXG4gICAgICAgICAgdGhpcy5fdG9BZGRyZXNzLFxuICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICB0aGlzLl9kYXRhLFxuICAgICAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lLFxuICAgICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgICAgdGhpcy5nZXRTaWduYXR1cmUoKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgJ01pc3NpbmcgdHJhbnNmZXIgbWFuZGF0b3J5IGZpZWxkcy4gQW1vdW50LCBkZXN0aW5hdGlvbiAodG8pIGFkZHJlc3MgYW5kIHNlcXVlbmNlSUQgYXJlIG1hbmRhdG9yeSdcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNNYW5kYXRvcnlGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3RvQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NlcXVlbmNlSWQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW5zIHRoZSBwcm9wZXIgb3BlcmF0aW9uIGhhc2ggdG8gc2lnbiBlaXRoZXIgYSBzZW5kTXVsdGlTaWcgZGF0YVxuICAgKiBvciBhIHNlbmRNdWx0aVNpZ1Rva2VuIGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIG9wZXJhdGlvbiBoYXNoXG4gICAqL1xuICBwcml2YXRlIGdldE9wZXJhdGlvbkhhc2goKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcGVyYXRpb25EYXRhID0gdGhpcy5nZXRPcGVyYXRpb25EYXRhKCk7XG4gICAgbGV0IG9wZXJhdGlvbkhhc2g6IHN0cmluZztcblxuICAgIGlmICh0aGlzLl9jb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhKSB7XG4gICAgICBjb25zdCB0eXBlczogc3RyaW5nW10gPSBvcGVyYXRpb25EYXRhWzBdIGFzIHN0cmluZ1tdO1xuICAgICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IG9wZXJhdGlvbkRhdGFbMV0ubWFwKChpdGVtKSA9PlxuICAgICAgICBpdGVtIGluc3RhbmNlb2YgQnVmZmVyID8gJzB4JyArIGl0ZW0udG9TdHJpbmcoJ2hleCcpIDogaXRlbVxuICAgICAgKTtcbiAgICAgIG9wZXJhdGlvbkhhc2ggPSBrZWNjYWsyNTYoZGVmYXVsdEFiaUNvZGVyLmVuY29kZSh0eXBlcywgdmFsdWVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZSBjb2luIHVzZXMgcGFja2VkIGVuY29kaW5nIGZvciB0eCBkYXRhIG9yIGl0IGlzIGEgdG9rZW4sIHRoZSBvcGVyYXRpb24gaGFzaCBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBFdGhlcmV1bSBBQklcbiAgICAgIG9wZXJhdGlvbkhhc2ggPSBldGhVdGlsLmJ1ZmZlclRvSGV4KEV0aGVyZXVtQWJpLnNvbGlkaXR5U0hBMyguLi5vcGVyYXRpb25EYXRhKSk7XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRpb25IYXNoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9wZXJhdGlvbkRhdGEoKTogKHN0cmluZyB8IEJ1ZmZlcilbXVtdIHtcbiAgICBsZXQgb3BlcmF0aW9uRGF0YTtcbiAgICBpZiAodGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3BlcmF0aW9uRGF0YSA9IFtcbiAgICAgICAgWydzdHJpbmcnLCAnYWRkcmVzcycsICd1aW50JywgJ2FkZHJlc3MnLCAndWludCcsICd1aW50J10sXG4gICAgICAgIFtcbiAgICAgICAgICB0aGlzLmdldFRva2VuT3BlcmF0aW9uSGFzaFByZWZpeCgpLFxuICAgICAgICAgIG5ldyBCTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRoaXMuX3RvQWRkcmVzcyksIDE2KSxcbiAgICAgICAgICB0aGlzLl9hbW91bnQsXG4gICAgICAgICAgbmV3IEJOKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MpLCAxNiksXG4gICAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgICAgXSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvQWRkcmVzcyA9IHRoaXMuX2NvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGFcbiAgICAgICAgPyB0aGlzLl90b0FkZHJlc3NcbiAgICAgICAgOiBuZXcgQk4oZXRoVXRpbC5zdHJpcEhleFByZWZpeCh0aGlzLl90b0FkZHJlc3MpLCAxNik7XG4gICAgICBvcGVyYXRpb25EYXRhID0gW1xuICAgICAgICBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYnl0ZXMnLCAndWludCcsICd1aW50J10sXG4gICAgICAgIFtcbiAgICAgICAgICB0aGlzLmdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKSxcbiAgICAgICAgICB0b0FkZHJlc3MsXG4gICAgICAgICAgdGhpcy5fYW1vdW50LFxuICAgICAgICAgIEJ1ZmZlci5mcm9tKGV0aFV0aWwucGFkVG9FdmVuKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodGhpcy5fZGF0YSkpIHx8ICcnLCAnaGV4JyksXG4gICAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgICAgXSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRpb25EYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyB0b2tlbnNcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHN0cmluZyBwcmVmaXhcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUb2tlbk9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuX2NvaW4/Lm5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmspPy50b2tlbk9wZXJhdGlvbkhhc2hQcmVmaXggPz8gYCR7dGhpcy5fY2hhaW5JZH0tRVJDMjBgID8/ICdFUkMyMCc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwcmVmaXggdXNlZCBpbiBnZW5lcmF0aW5nIGFuIG9wZXJhdGlvbiBoYXNoIGZvciBzZW5kaW5nIG5hdGl2ZSBjb2luc1xuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgc3RyaW5nIHByZWZpeFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuX2NvaW4/Lm5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmspPy5uYXRpdmVDb2luT3BlcmF0aW9uSGFzaFByZWZpeCA/PyBgJHt0aGlzLl9jaGFpbklkfWAgPz8gJ0VUSEVSJztcbiAgfVxuXG4gIC8qKiBSZXR1cm4gYW4gZXhwaXJhdGlvbiB0aW1lLCBpbiBzZWNvbmRzLCBzZXQgdG8gb25lIGhvdXIgZnJvbSBub3dcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gZXhwaXJhdGlvbiB0aW1lXG4gICAqL1xuICBwcml2YXRlIGdldEV4cGlyYXRpb25UaW1lKCk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKGN1cnJlbnREYXRlLmdldEhvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gY3VycmVudERhdGUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhIHNpZ25pbmcga2V5IGlzIHNldCBmb3IgdGhpcyBidWlsZGVyLCByZWNhbGN1bGF0ZXMgdGhlIHNpZ25hdHVyZVxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgc2lnbmF0dXJlIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U2lnbmF0dXJlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3NpZ25LZXkpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuZXRoU2lnbk1zZ0hhc2goKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZSE7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXRoU2lnbk1zZ0hhc2goKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRPcGVyYXRpb25IYXNoKCk7XG4gICAgY29uc3Qga2V5QnVmZmVyID0gQnVmZmVyLmZyb20oZXRoVXRpbC5wYWRUb0V2ZW4odGhpcy5fc2lnbktleSksICdoZXgnKTtcbiAgICBpZiAoa2V5QnVmZmVyLmxlbmd0aCAhPT0gMzIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJpdmF0ZSBrZXkgbGVuZ3RoIGlzIGludmFsaWQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmF0dXJlSW5QYXJ0cyA9IGV0aFV0aWwuZWNzaWduKFxuICAgICAgQnVmZmVyLmZyb20oZXRoVXRpbC5wYWRUb0V2ZW4oZXRoVXRpbC5zdHJpcEhleFByZWZpeChkYXRhKSksICdoZXgnKSxcbiAgICAgIGtleUJ1ZmZlclxuICAgICk7XG5cbiAgICAvLyBBc3NlbWJsZSBzdHJpbmdzIGZyb20gciwgcyBhbmQgdlxuICAgIGNvbnN0IHIgPSBldGhVdGlsLnNldExlbmd0aExlZnQoc2lnbmF0dXJlSW5QYXJ0cy5yLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHMgPSBldGhVdGlsLnNldExlbmd0aExlZnQoc2lnbmF0dXJlSW5QYXJ0cy5zLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHYgPSBldGhVdGlsLnN0cmlwSGV4UHJlZml4KGV0aFV0aWwuaW50VG9IZXgoc2lnbmF0dXJlSW5QYXJ0cy52KSk7XG5cbiAgICAvLyBDb25jYXRlbmF0ZSB0aGUgciwgcyBhbmQgdiBwYXJ0cyB0byBtYWtlIHRoZSBzaWduYXR1cmUgc3RyaW5nXG4gICAgcmV0dXJuIGV0aFV0aWwuYWRkSGV4UHJlZml4KHIuY29uY2F0KHMsIHYpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IGRlY29kZVRyYW5zZmVyRGF0YShkYXRhKTtcblxuICAgIHRoaXMuX3RvQWRkcmVzcyA9IHRyYW5zZmVyRGF0YS50bztcbiAgICB0aGlzLl9hbW91bnQgPSB0cmFuc2ZlckRhdGEuYW1vdW50O1xuICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdHJhbnNmZXJEYXRhLmV4cGlyZVRpbWU7XG4gICAgdGhpcy5fc2VxdWVuY2VJZCA9IHRyYW5zZmVyRGF0YS5zZXF1ZW5jZUlkO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRyYW5zZmVyRGF0YS5zaWduYXR1cmU7XG5cbiAgICBpZiAodHJhbnNmZXJEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0cmFuc2ZlckRhdGEuZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNmZXJEYXRhLnRva2VuQ29udHJhY3RBZGRyZXNzKSB7XG4gICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyA9IHRyYW5zZmVyRGF0YS50b2tlbkNvbnRyYWN0QWRkcmVzcztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { BaseCoin } from '@bitgo-beta/statics';
2
+ export declare abstract class BaseNFTTransferBuilder {
3
+ protected readonly _EMPTY_HEX_VALUE = "0x";
4
+ protected _fromAddress: string;
5
+ protected _toAddress: string;
6
+ protected _sequenceId: number;
7
+ protected _signKey: string;
8
+ protected _expirationTime: number;
9
+ protected _signature: string;
10
+ protected _data: string;
11
+ protected _tokenContractAddress: string;
12
+ protected _coin: Readonly<BaseCoin>;
13
+ protected _nativeCoinOperationHashPrefix?: string;
14
+ protected _chainId?: string;
15
+ abstract build(): string;
16
+ protected constructor(serializedData?: string);
17
+ expirationTime(date: number): this;
18
+ key(signKey: string): this;
19
+ contractSequenceId(counter: number): this;
20
+ to(address: string): this;
21
+ from(address: string): this;
22
+ /** Return an expiration time, in seconds, set to one hour from now
23
+ *
24
+ * @returns {number} expiration time
25
+ */
26
+ private static getExpirationTime;
27
+ /**
28
+ * If a signing key is set for this builder, recalculates the signature
29
+ *
30
+ * @returns {string} the signature value
31
+ */
32
+ protected getSignature(): string;
33
+ /**
34
+ * Get the prefix used in generating an operation hash for sending native coins
35
+ *
36
+ * @returns the string prefix
37
+ */
38
+ protected getNativeOperationHashPrefix(): string;
39
+ /**
40
+ * Obtains the proper operation hash to sign either a sendMultiSig data
41
+ * or a sendMultiSigToken data
42
+ *
43
+ * @returns {string} the operation hash
44
+ */
45
+ private getOperationHash;
46
+ /**
47
+ * Signs the Message with the given private key
48
+ * @returns {string} 65 byte long raw signature
49
+ */
50
+ protected ethSignMsgHash(): string;
51
+ }
52
+ //# sourceMappingURL=baseNFTTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseNFTTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/baseNFTTransferBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,8BAAsB,sBAAsB;IAC1C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,QAAQ;IAE3C,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,SAAS,CAAC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;aAEZ,KAAK,IAAI,MAAM;IAE/B,SAAS,aAAa,cAAc,CAAC,EAAE,MAAM;IAS7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASzC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM;IAUhC;;;;OAIG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;IAIhD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;CAOnC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseNFTTransferBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const utils_1 = require("../utils");
6
+ const utils_2 = require("ethers/lib/utils");
7
+ class BaseNFTTransferBuilder {
8
+ constructor(serializedData) {
9
+ this._EMPTY_HEX_VALUE = '0x';
10
+ if (serializedData === undefined) {
11
+ // initialize with default values for non mandatory fields
12
+ this._expirationTime = BaseNFTTransferBuilder.getExpirationTime();
13
+ this._data = this._EMPTY_HEX_VALUE;
14
+ this._signature = this._EMPTY_HEX_VALUE;
15
+ }
16
+ }
17
+ expirationTime(date) {
18
+ if (date > 0) {
19
+ this._signature = this._EMPTY_HEX_VALUE;
20
+ this._expirationTime = date;
21
+ return this;
22
+ }
23
+ throw new sdk_core_1.InvalidParameterValueError('Invalid expiration time');
24
+ }
25
+ key(signKey) {
26
+ this._signKey = signKey;
27
+ return this;
28
+ }
29
+ contractSequenceId(counter) {
30
+ if (counter >= 0) {
31
+ this._signature = this._EMPTY_HEX_VALUE;
32
+ this._sequenceId = counter;
33
+ return this;
34
+ }
35
+ throw new sdk_core_1.InvalidParameterValueError('Invalid contract sequence id');
36
+ }
37
+ to(address) {
38
+ if ((0, utils_1.isValidEthAddress)(address)) {
39
+ this._signature = this._EMPTY_HEX_VALUE;
40
+ this._toAddress = address;
41
+ return this;
42
+ }
43
+ throw new sdk_core_1.InvalidParameterValueError('Invalid address');
44
+ }
45
+ from(address) {
46
+ if ((0, utils_1.isValidEthAddress)(address)) {
47
+ this._signature = this._EMPTY_HEX_VALUE;
48
+ this._fromAddress = address;
49
+ return this;
50
+ }
51
+ throw new sdk_core_1.InvalidParameterValueError('Invalid address');
52
+ }
53
+ /** Return an expiration time, in seconds, set to one hour from now
54
+ *
55
+ * @returns {number} expiration time
56
+ */
57
+ static getExpirationTime() {
58
+ const currentDate = new Date();
59
+ currentDate.setHours(currentDate.getHours() + 1);
60
+ return currentDate.getTime() / 1000;
61
+ }
62
+ /**
63
+ * If a signing key is set for this builder, recalculates the signature
64
+ *
65
+ * @returns {string} the signature value
66
+ */
67
+ getSignature() {
68
+ if (this._signKey) {
69
+ this._signature = this.ethSignMsgHash();
70
+ }
71
+ if (this._signature === null) {
72
+ throw new sdk_core_1.InvalidSignatureError('Null signature value');
73
+ }
74
+ return this._signature;
75
+ }
76
+ /**
77
+ * Get the prefix used in generating an operation hash for sending native coins
78
+ *
79
+ * @returns the string prefix
80
+ */
81
+ getNativeOperationHashPrefix() {
82
+ var _a, _b;
83
+ return (_b = (_a = this._nativeCoinOperationHashPrefix) !== null && _a !== void 0 ? _a : this._chainId) !== null && _b !== void 0 ? _b : 'ETHER';
84
+ }
85
+ /**
86
+ * Obtains the proper operation hash to sign either a sendMultiSig data
87
+ * or a sendMultiSigToken data
88
+ *
89
+ * @returns {string} the operation hash
90
+ */
91
+ getOperationHash() {
92
+ const hash = (0, utils_2.solidityKeccak256)(['string', 'address', 'uint', 'bytes', 'uint', 'uint'], [
93
+ this.getNativeOperationHashPrefix(),
94
+ this._toAddress,
95
+ '0',
96
+ this._data,
97
+ this._expirationTime,
98
+ this._sequenceId,
99
+ ]);
100
+ return hash;
101
+ }
102
+ /**
103
+ * Signs the Message with the given private key
104
+ * @returns {string} 65 byte long raw signature
105
+ */
106
+ ethSignMsgHash() {
107
+ const signKey = new utils_2.SigningKey('0x'.concat(this._signKey));
108
+ const digest = signKey.signDigest(this.getOperationHash());
109
+ const rawSignature = (0, utils_2.joinSignature)(digest);
110
+ return rawSignature;
111
+ }
112
+ }
113
+ exports.BaseNFTTransferBuilder = BaseNFTTransferBuilder;
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU5GVFRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJCdWlsZGVycy9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUF5RjtBQUN6RixvQ0FBNkM7QUFDN0MsNENBQWdGO0FBR2hGLE1BQXNCLHNCQUFzQjtJQWlCMUMsWUFBc0IsY0FBdUI7UUFoQjFCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWlCekMsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ2hDLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxHQUFHLENBQUMsT0FBZTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFlO1FBQ2hDLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEVBQUUsQ0FBQyxPQUFlO1FBQ2hCLElBQUksSUFBQSx5QkFBaUIsRUFBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlO1FBQ2xCLElBQUksSUFBQSx5QkFBaUIsRUFBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUI7UUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxZQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDNUIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyw0QkFBNEI7O1FBQ3BDLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyw4QkFBOEIsbUNBQUksSUFBSSxDQUFDLFFBQVEsbUNBQUksT0FBTyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxJQUFBLHlCQUFpQixFQUM1QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3REO1lBQ0UsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVO1lBQ2YsR0FBRztZQUNILElBQUksQ0FBQyxLQUFLO1lBQ1YsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLFdBQVc7U0FDakIsQ0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sY0FBYztRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBQSxxQkFBYSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQXJJRCx3REFxSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciwgSW52YWxpZFNpZ25hdHVyZUVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgaXNWYWxpZEV0aEFkZHJlc3MgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBqb2luU2lnbmF0dXJlLCBzb2xpZGl0eUtlY2NhazI1NiwgU2lnbmluZ0tleSB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VORlRUcmFuc2ZlckJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX0VNUFRZX0hFWF9WQUxVRSA9ICcweCc7XG4gIC8vIGR1bW15IGFjY291bnQgdmFsdWUsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggU2VuZE11bHRpU2lnXG4gIHByb3RlY3RlZCBfZnJvbUFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b0FkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zZXF1ZW5jZUlkOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfc2lnbktleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2V4cGlyYXRpb25UaW1lOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZGF0YTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3Rva2VuQ29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgX25hdGl2ZUNvaW5PcGVyYXRpb25IYXNoUHJlZml4Pzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NoYWluSWQ/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkKCk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICBpZiAoc2VyaWFsaXplZERhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBub24gbWFuZGF0b3J5IGZpZWxkc1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyLmdldEV4cGlyYXRpb25UaW1lKCk7XG4gICAgICB0aGlzLl9kYXRhID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgIH1cbiAgfVxuXG4gIGV4cGlyYXRpb25UaW1lKGRhdGU6IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChkYXRlID4gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBkYXRlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBleHBpcmF0aW9uIHRpbWUnKTtcbiAgfVxuXG4gIGtleShzaWduS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9zaWduS2V5ID0gc2lnbktleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbnRyYWN0U2VxdWVuY2VJZChjb3VudGVyOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoY291bnRlciA+PSAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl9zZXF1ZW5jZUlkID0gY291bnRlcjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgY29udHJhY3Qgc2VxdWVuY2UgaWQnKTtcbiAgfVxuXG4gIHRvKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmIChpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fdG9BZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgZnJvbShhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX2Zyb21BZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgLyoqIFJldHVybiBhbiBleHBpcmF0aW9uIHRpbWUsIGluIHNlY29uZHMsIHNldCB0byBvbmUgaG91ciBmcm9tIG5vd1xuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBleHBpcmF0aW9uIHRpbWVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldEV4cGlyYXRpb25UaW1lKCk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKGN1cnJlbnREYXRlLmdldEhvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gY3VycmVudERhdGUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhIHNpZ25pbmcga2V5IGlzIHNldCBmb3IgdGhpcyBidWlsZGVyLCByZWNhbGN1bGF0ZXMgdGhlIHNpZ25hdHVyZVxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgc2lnbmF0dXJlIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U2lnbmF0dXJlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3NpZ25LZXkpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuZXRoU2lnbk1zZ0hhc2goKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRTaWduYXR1cmVFcnJvcignTnVsbCBzaWduYXR1cmUgdmFsdWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByZWZpeCB1c2VkIGluIGdlbmVyYXRpbmcgYW4gb3BlcmF0aW9uIGhhc2ggZm9yIHNlbmRpbmcgbmF0aXZlIGNvaW5zXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBzdHJpbmcgcHJlZml4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TmF0aXZlT3BlcmF0aW9uSGFzaFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYXRpdmVDb2luT3BlcmF0aW9uSGFzaFByZWZpeCA/PyB0aGlzLl9jaGFpbklkID8/ICdFVEhFUic7XG4gIH1cblxuICAvKipcbiAgICogT2J0YWlucyB0aGUgcHJvcGVyIG9wZXJhdGlvbiBoYXNoIHRvIHNpZ24gZWl0aGVyIGEgc2VuZE11bHRpU2lnIGRhdGFcbiAgICogb3IgYSBzZW5kTXVsdGlTaWdUb2tlbiBkYXRhXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBvcGVyYXRpb24gaGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRPcGVyYXRpb25IYXNoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzaCA9IHNvbGlkaXR5S2VjY2FrMjU2KFxuICAgICAgWydzdHJpbmcnLCAnYWRkcmVzcycsICd1aW50JywgJ2J5dGVzJywgJ3VpbnQnLCAndWludCddLFxuICAgICAgW1xuICAgICAgICB0aGlzLmdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKSxcbiAgICAgICAgdGhpcy5fdG9BZGRyZXNzLFxuICAgICAgICAnMCcsIC8vIGR1bW15IGFtb3VudCB2YWx1ZVxuICAgICAgICB0aGlzLl9kYXRhLFxuICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgIF1cbiAgICApO1xuICAgIHJldHVybiBoYXNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRoZSBNZXNzYWdlIHdpdGggdGhlIGdpdmVuIHByaXZhdGUga2V5XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IDY1IGJ5dGUgbG9uZyByYXcgc2lnbmF0dXJlXG4gICAqL1xuICBwcm90ZWN0ZWQgZXRoU2lnbk1zZ0hhc2goKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWduS2V5ID0gbmV3IFNpZ25pbmdLZXkoJzB4Jy5jb25jYXQodGhpcy5fc2lnbktleSkpO1xuICAgIGNvbnN0IGRpZ2VzdCA9IHNpZ25LZXkuc2lnbkRpZ2VzdCh0aGlzLmdldE9wZXJhdGlvbkhhc2goKSk7XG4gICAgY29uc3QgcmF3U2lnbmF0dXJlID0gam9pblNpZ25hdHVyZShkaWdlc3QpO1xuXG4gICAgcmV0dXJuIHJhd1NpZ25hdHVyZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './baseNFTTransferBuilder';
2
+ export * from './transferBuilderERC1155';
3
+ export * from './transferBuilderERC721';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./baseNFTTransferBuilder"), exports);
18
+ __exportStar(require("./transferBuilderERC1155"), exports);
19
+ __exportStar(require("./transferBuilderERC721"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zZmVyQnVpbGRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUF5QztBQUN6QywyREFBeUM7QUFDekMsMERBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyRVJDMTE1NSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zZmVyQnVpbGRlckVSQzcyMSc7XG4iXX0=
@@ -0,0 +1,16 @@
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
+ signAndBuild(chainId?: string): string;
12
+ private hasMandatoryFields;
13
+ private decodeTransferData;
14
+ build(): string;
15
+ }
16
+ //# 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,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAqBtC,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAe1B,KAAK,IAAI,MAAM;CAWhB"}