@bitgo/abstract-eth 24.10.0 → 24.10.1
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 +4 -0
- package/package.json +6 -6
- package/LICENSE +0 -191
- package/dist/src/abstractEthLikeCoin.d.ts +0 -95
- package/dist/src/abstractEthLikeCoin.d.ts.map +0 -1
- package/dist/src/abstractEthLikeCoin.js +0 -160
- package/dist/src/abstractEthLikeNewCoins.d.ts +0 -749
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +0 -1
- package/dist/src/abstractEthLikeNewCoins.js +0 -2229
- package/dist/src/ethLikeToken.d.ts +0 -70
- package/dist/src/ethLikeToken.d.ts.map +0 -1
- package/dist/src/ethLikeToken.js +0 -360
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -21
- package/dist/src/lib/contractCall.d.ts +0 -8
- package/dist/src/lib/contractCall.d.ts.map +0 -1
- package/dist/src/lib/contractCall.js +0 -17
- package/dist/src/lib/iface.d.ts +0 -133
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -8
- package/dist/src/lib/index.d.ts +0 -16
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -57
- package/dist/src/lib/keyPair.d.ts +0 -26
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -65
- package/dist/src/lib/messages/eip191/eip191Message.d.ts +0 -12
- package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +0 -1
- package/dist/src/lib/messages/eip191/eip191Message.js +0 -25
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +0 -19
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +0 -1
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +0 -27
- package/dist/src/lib/messages/eip191/index.d.ts +0 -3
- package/dist/src/lib/messages/eip191/index.d.ts.map +0 -1
- package/dist/src/lib/messages/eip191/index.js +0 -19
- package/dist/src/lib/messages/index.d.ts +0 -3
- package/dist/src/lib/messages/index.d.ts.map +0 -1
- package/dist/src/lib/messages/index.js +0 -19
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +0 -7
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/messages/messageBuilderFactory.js +0 -20
- package/dist/src/lib/transaction.d.ts +0 -67
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -142
- package/dist/src/lib/transactionBuilder.d.ts +0 -251
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -742
- package/dist/src/lib/transferBuilder.d.ts +0 -76
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -307
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +0 -54
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +0 -120
- package/dist/src/lib/transferBuilders/index.d.ts +0 -4
- package/dist/src/lib/transferBuilders/index.d.ts.map +0 -1
- package/dist/src/lib/transferBuilders/index.js +0 -20
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +0 -17
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +0 -1
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +0 -96
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +0 -16
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +0 -1
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +0 -81
- package/dist/src/lib/types.d.ts +0 -39
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -137
- package/dist/src/lib/utils.d.ts +0 -270
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -717
- package/dist/src/lib/walletUtil.d.ts +0 -32
- package/dist/src/lib/walletUtil.d.ts.map +0 -1
- package/dist/src/lib/walletUtil.js +0 -35
- package/dist/src/types.d.ts +0 -9
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -3
- package/dist/test/index.d.ts +0 -2
- package/dist/test/index.d.ts.map +0 -1
- package/dist/test/index.js +0 -18
- package/dist/test/unit/coin.d.ts +0 -8
- package/dist/test/unit/coin.d.ts.map +0 -1
- package/dist/test/unit/coin.js +0 -577
- package/dist/test/unit/index.d.ts +0 -6
- package/dist/test/unit/index.d.ts.map +0 -1
- package/dist/test/unit/index.js +0 -22
- package/dist/test/unit/messages/eip191/eip191Message.d.ts +0 -2
- package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +0 -1
- package/dist/test/unit/messages/eip191/eip191Message.js +0 -137
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +0 -2
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +0 -1
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +0 -116
- package/dist/test/unit/messages/fixtures.d.ts +0 -24
- package/dist/test/unit/messages/fixtures.d.ts.map +0 -1
- package/dist/test/unit/messages/fixtures.js +0 -28
- package/dist/test/unit/messages/index.d.ts +0 -4
- package/dist/test/unit/messages/index.d.ts.map +0 -1
- package/dist/test/unit/messages/index.js +0 -20
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +0 -2
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/messages/messageBuilderFactory.js +0 -44
- package/dist/test/unit/token.d.ts +0 -2
- package/dist/test/unit/token.d.ts.map +0 -1
- package/dist/test/unit/token.js +0 -37
- package/dist/test/unit/transaction.d.ts +0 -3
- package/dist/test/unit/transaction.d.ts.map +0 -1
- package/dist/test/unit/transaction.js +0 -60
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +0 -8
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/addressInitialization.js +0 -95
- package/dist/test/unit/transactionBuilder/index.d.ts +0 -4
- package/dist/test/unit/transactionBuilder/index.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/index.js +0 -20
- package/dist/test/unit/transactionBuilder/send.d.ts +0 -3
- package/dist/test/unit/transactionBuilder/send.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/send.js +0 -197
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +0 -10
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder/walletInitialization.js +0 -124
- package/dist/test/unit/transferBuilder.d.ts +0 -2
- package/dist/test/unit/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transferBuilder.js +0 -76
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/** ETH transfer builder */
|
|
2
|
-
export declare class TransferBuilder {
|
|
3
|
-
private readonly _EMPTY_HEX_VALUE;
|
|
4
|
-
protected _amount: string;
|
|
5
|
-
protected _toAddress: string;
|
|
6
|
-
protected _sequenceId: number;
|
|
7
|
-
protected _signKey: string | null;
|
|
8
|
-
protected _expirationTime: number;
|
|
9
|
-
protected _signature: string;
|
|
10
|
-
protected _isFirstSigner: boolean | undefined;
|
|
11
|
-
private _data;
|
|
12
|
-
private _tokenContractAddress?;
|
|
13
|
-
private _coin;
|
|
14
|
-
private _chainId?;
|
|
15
|
-
private _coinUsesNonPackedEncodingForTxData?;
|
|
16
|
-
private _walletVersion?;
|
|
17
|
-
constructor(serializedData?: string, isFirstSigner?: boolean);
|
|
18
|
-
/**
|
|
19
|
-
* A method to set the native coin or ERC20 token to be transferred.
|
|
20
|
-
* This ERC20 token may not be compatible with the network.
|
|
21
|
-
*
|
|
22
|
-
* @param {string} coin - the native coin or ERC20 token to be set
|
|
23
|
-
* @returns {TransferBuilder} the transfer builder instance modified
|
|
24
|
-
*/
|
|
25
|
-
coin(coin: string): TransferBuilder;
|
|
26
|
-
getIsFirstSigner(): boolean;
|
|
27
|
-
walletVersion(version: number): TransferBuilder;
|
|
28
|
-
data(additionalData: string): TransferBuilder;
|
|
29
|
-
amount(amount: string): this;
|
|
30
|
-
to(address: string): TransferBuilder;
|
|
31
|
-
contractSequenceId(counter: number): TransferBuilder;
|
|
32
|
-
key(signKey: string): TransferBuilder;
|
|
33
|
-
expirationTime(date: number): TransferBuilder;
|
|
34
|
-
isFirstSigner(isFirstSigner: boolean): TransferBuilder;
|
|
35
|
-
tokenContractAddress(tokenContractAddress: string): TransferBuilder;
|
|
36
|
-
setCoinUsesNonPackedEncodingForTxData(isCoinUsesNonPackedEncodingForTxData: boolean): TransferBuilder;
|
|
37
|
-
setSignature(signature: string): TransferBuilder;
|
|
38
|
-
signAndBuild(chainId: string, coinUsesNonPackedEncodingForTxData?: boolean): string;
|
|
39
|
-
private hasMandatoryFields;
|
|
40
|
-
/**
|
|
41
|
-
* Obtains the proper operation hash to sign either a sendMultiSig data
|
|
42
|
-
* or a sendMultiSigToken data
|
|
43
|
-
*
|
|
44
|
-
* @returns {string} the operation hash
|
|
45
|
-
*/
|
|
46
|
-
getOperationHash(): string;
|
|
47
|
-
protected getOperationData(): (string | number | Buffer)[][];
|
|
48
|
-
private getOperationHashPrefix;
|
|
49
|
-
/**
|
|
50
|
-
* Get the prefix used in generating an operation hash for sending tokens
|
|
51
|
-
*
|
|
52
|
-
* @returns the string prefix
|
|
53
|
-
*/
|
|
54
|
-
protected getTokenOperationHashPrefix(): string;
|
|
55
|
-
/**
|
|
56
|
-
* Get the prefix used in generating an operation hash for sending native coins
|
|
57
|
-
*
|
|
58
|
-
* @returns the string prefix
|
|
59
|
-
*/
|
|
60
|
-
protected getNativeOperationHashPrefix(): string;
|
|
61
|
-
/** Return an expiration time, in seconds, set to one hour from now
|
|
62
|
-
*
|
|
63
|
-
* @returns {number} expiration time
|
|
64
|
-
*/
|
|
65
|
-
private getExpirationTime;
|
|
66
|
-
/**
|
|
67
|
-
* If a signing key is set for this builder, recalculates the signature
|
|
68
|
-
*
|
|
69
|
-
* @returns {string} the signature value
|
|
70
|
-
*/
|
|
71
|
-
protected getSignature(): string;
|
|
72
|
-
protected ethSignMsgHash(): string;
|
|
73
|
-
private decodeTransferData;
|
|
74
|
-
getSignatureData(): Buffer<ArrayBuffer>;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAUA,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,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,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;IACtD,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO;IAY5D;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IASnC,gBAAgB,IAAI,OAAO;IAI3B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAK/C,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,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,eAAe;IAKtD,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,eAAe;IAKnE,qCAAqC,CAAC,oCAAoC,EAAE,OAAO,GAAG,eAAe;IAKrG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAMhD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,kCAAkC,CAAC,EAAE,OAAO,GAAG,MAAM;IAsCnF,OAAO,CAAC,kBAAkB;IAI1B;;;;;OAKG;IACI,gBAAgB,IAAI,MAAM;IAiBjC,SAAS,CAAC,gBAAgB,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;IAkC5D,OAAO,CAAC,sBAAsB;IAO9B;;;;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;IAqBlC,OAAO,CAAC,kBAAkB;IAkBnB,gBAAgB,IAAI,MAAM,CAAC,WAAW,CAAC;CAY/C"}
|
|
@@ -1,307 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.TransferBuilder = void 0;
|
|
40
|
-
const assert_1 = __importDefault(require("assert"));
|
|
41
|
-
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
42
|
-
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
43
|
-
const bn_js_1 = __importDefault(require("bn.js"));
|
|
44
|
-
const statics_1 = require("@bitgo/statics");
|
|
45
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
46
|
-
const utils_1 = require("./utils");
|
|
47
|
-
const utils_2 = require("ethers/lib/utils");
|
|
48
|
-
const walletUtil_1 = require("./walletUtil");
|
|
49
|
-
/** ETH transfer builder */
|
|
50
|
-
class TransferBuilder {
|
|
51
|
-
constructor(serializedData, isFirstSigner) {
|
|
52
|
-
this._EMPTY_HEX_VALUE = '0x';
|
|
53
|
-
this._isFirstSigner = isFirstSigner;
|
|
54
|
-
if (serializedData) {
|
|
55
|
-
this.decodeTransferData(serializedData);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// initialize with default values for non mandatory fields
|
|
59
|
-
this._expirationTime = this.getExpirationTime();
|
|
60
|
-
this._data = this._EMPTY_HEX_VALUE;
|
|
61
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* A method to set the native coin or ERC20 token to be transferred.
|
|
66
|
-
* This ERC20 token may not be compatible with the network.
|
|
67
|
-
*
|
|
68
|
-
* @param {string} coin - the native coin or ERC20 token to be set
|
|
69
|
-
* @returns {TransferBuilder} the transfer builder instance modified
|
|
70
|
-
*/
|
|
71
|
-
coin(coin) {
|
|
72
|
-
this._coin = statics_1.coins.get(coin);
|
|
73
|
-
if (this._coin instanceof statics_1.ContractAddressDefinedToken) {
|
|
74
|
-
this._tokenContractAddress = this._coin.contractAddress.toString();
|
|
75
|
-
}
|
|
76
|
-
return this;
|
|
77
|
-
}
|
|
78
|
-
getIsFirstSigner() {
|
|
79
|
-
return this._isFirstSigner ? this._isFirstSigner : false;
|
|
80
|
-
}
|
|
81
|
-
walletVersion(version) {
|
|
82
|
-
this._walletVersion = version;
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
data(additionalData) {
|
|
86
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
87
|
-
this._data = additionalData;
|
|
88
|
-
return this;
|
|
89
|
-
}
|
|
90
|
-
amount(amount) {
|
|
91
|
-
if (!(0, utils_1.isValidAmount)(amount)) {
|
|
92
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid amount');
|
|
93
|
-
}
|
|
94
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
95
|
-
this._amount = amount;
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
to(address) {
|
|
99
|
-
if ((0, utils_1.isValidEthAddress)(address)) {
|
|
100
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
101
|
-
this._toAddress = address;
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
105
|
-
}
|
|
106
|
-
contractSequenceId(counter) {
|
|
107
|
-
if (counter >= 0) {
|
|
108
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
109
|
-
this._sequenceId = counter;
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid contract sequence id');
|
|
113
|
-
}
|
|
114
|
-
key(signKey) {
|
|
115
|
-
this._signKey = signKey;
|
|
116
|
-
return this;
|
|
117
|
-
}
|
|
118
|
-
expirationTime(date) {
|
|
119
|
-
if (date > 0) {
|
|
120
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
121
|
-
this._expirationTime = date;
|
|
122
|
-
return this;
|
|
123
|
-
}
|
|
124
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid expiration time');
|
|
125
|
-
}
|
|
126
|
-
isFirstSigner(isFirstSigner) {
|
|
127
|
-
this._isFirstSigner = isFirstSigner;
|
|
128
|
-
return this;
|
|
129
|
-
}
|
|
130
|
-
tokenContractAddress(tokenContractAddress) {
|
|
131
|
-
this._tokenContractAddress = tokenContractAddress;
|
|
132
|
-
return this;
|
|
133
|
-
}
|
|
134
|
-
setCoinUsesNonPackedEncodingForTxData(isCoinUsesNonPackedEncodingForTxData) {
|
|
135
|
-
this._coinUsesNonPackedEncodingForTxData = isCoinUsesNonPackedEncodingForTxData;
|
|
136
|
-
return this;
|
|
137
|
-
}
|
|
138
|
-
setSignature(signature) {
|
|
139
|
-
this._signKey = null;
|
|
140
|
-
this._signature = ethUtil.addHexPrefix(signature);
|
|
141
|
-
return this;
|
|
142
|
-
}
|
|
143
|
-
signAndBuild(chainId, coinUsesNonPackedEncodingForTxData) {
|
|
144
|
-
this._chainId = chainId;
|
|
145
|
-
// If the coin uses non-packed encoding for tx data, the operation hash is calculated differently
|
|
146
|
-
// This new encoding type is applicable only for native coins and not tokens
|
|
147
|
-
this._coinUsesNonPackedEncodingForTxData =
|
|
148
|
-
coinUsesNonPackedEncodingForTxData && this._tokenContractAddress === undefined;
|
|
149
|
-
if (this.hasMandatoryFields()) {
|
|
150
|
-
if (this._isFirstSigner) {
|
|
151
|
-
// First signer signs different data than the second signer in multisig evm contracts.
|
|
152
|
-
return ethUtil.addHexPrefix(this.getSignatureData().toString('hex'));
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
if (this._tokenContractAddress !== undefined) {
|
|
156
|
-
return (0, utils_1.sendMultiSigTokenData)(this._toAddress, this._amount, this._tokenContractAddress, this._expirationTime, this._sequenceId, this.getSignature());
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
return (0, utils_1.sendMultiSigData)(this._toAddress, this._amount, this._data, this._expirationTime, this._sequenceId, this.getSignature());
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
throw new sdk_core_1.BuildTransactionError('Missing transfer mandatory fields. Amount, destination (to) address and sequenceID are mandatory');
|
|
164
|
-
}
|
|
165
|
-
hasMandatoryFields() {
|
|
166
|
-
return this._amount !== undefined && this._toAddress !== undefined && this._sequenceId !== undefined;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Obtains the proper operation hash to sign either a sendMultiSig data
|
|
170
|
-
* or a sendMultiSigToken data
|
|
171
|
-
*
|
|
172
|
-
* @returns {string} the operation hash
|
|
173
|
-
*/
|
|
174
|
-
getOperationHash() {
|
|
175
|
-
const operationData = this.getOperationData();
|
|
176
|
-
let operationHash;
|
|
177
|
-
if (this._coinUsesNonPackedEncodingForTxData) {
|
|
178
|
-
const types = operationData[0];
|
|
179
|
-
const values = operationData[1].map((item) => typeof item === 'string' || typeof item === 'number' ? item : '0x' + item.toString('hex'));
|
|
180
|
-
operationHash = (0, utils_2.keccak256)(utils_2.defaultAbiCoder.encode(types, values));
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
// If the coin uses packed encoding for tx data or it is a token, the operation hash is calculated using the Ethereum ABI
|
|
184
|
-
operationHash = ethUtil.bufferToHex(ethereumjs_abi_1.default.soliditySHA3(...operationData));
|
|
185
|
-
}
|
|
186
|
-
return operationHash;
|
|
187
|
-
}
|
|
188
|
-
getOperationData() {
|
|
189
|
-
let operationData;
|
|
190
|
-
const prefix = this.getOperationHashPrefix();
|
|
191
|
-
if (this._tokenContractAddress !== undefined) {
|
|
192
|
-
operationData = [
|
|
193
|
-
['string', 'address', 'uint', 'address', 'uint', 'uint'],
|
|
194
|
-
[
|
|
195
|
-
prefix,
|
|
196
|
-
new bn_js_1.default(ethUtil.stripHexPrefix(this._toAddress), 16),
|
|
197
|
-
this._amount,
|
|
198
|
-
new bn_js_1.default(ethUtil.stripHexPrefix(this._tokenContractAddress), 16),
|
|
199
|
-
this._expirationTime,
|
|
200
|
-
this._sequenceId,
|
|
201
|
-
],
|
|
202
|
-
];
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
const toAddress = this._coinUsesNonPackedEncodingForTxData
|
|
206
|
-
? this._toAddress
|
|
207
|
-
: new bn_js_1.default(ethUtil.stripHexPrefix(this._toAddress), 16);
|
|
208
|
-
operationData = [
|
|
209
|
-
['string', 'address', 'uint', 'bytes', 'uint', 'uint'],
|
|
210
|
-
[
|
|
211
|
-
prefix,
|
|
212
|
-
toAddress,
|
|
213
|
-
this._amount,
|
|
214
|
-
Buffer.from(ethUtil.padToEven(ethUtil.stripHexPrefix(this._data)) || '', 'hex'),
|
|
215
|
-
this._expirationTime,
|
|
216
|
-
this._sequenceId,
|
|
217
|
-
],
|
|
218
|
-
];
|
|
219
|
-
}
|
|
220
|
-
return operationData;
|
|
221
|
-
}
|
|
222
|
-
getOperationHashPrefix() {
|
|
223
|
-
if (this._walletVersion === 4) {
|
|
224
|
-
return this._tokenContractAddress ? `${this._chainId}-ERC20` : `${this._chainId}`;
|
|
225
|
-
}
|
|
226
|
-
return this._tokenContractAddress ? this.getTokenOperationHashPrefix() : this.getNativeOperationHashPrefix();
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get the prefix used in generating an operation hash for sending tokens
|
|
230
|
-
*
|
|
231
|
-
* @returns the string prefix
|
|
232
|
-
*/
|
|
233
|
-
getTokenOperationHashPrefix() {
|
|
234
|
-
return this._coin?.network?.tokenOperationHashPrefix ?? `${this._chainId}-ERC20` ?? 'ERC20';
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Get the prefix used in generating an operation hash for sending native coins
|
|
238
|
-
*
|
|
239
|
-
* @returns the string prefix
|
|
240
|
-
*/
|
|
241
|
-
getNativeOperationHashPrefix() {
|
|
242
|
-
return this._coin?.network?.nativeCoinOperationHashPrefix ?? `${this._chainId}` ?? 'ETHER';
|
|
243
|
-
}
|
|
244
|
-
/** Return an expiration time, in seconds, set to one hour from now
|
|
245
|
-
*
|
|
246
|
-
* @returns {number} expiration time
|
|
247
|
-
*/
|
|
248
|
-
getExpirationTime() {
|
|
249
|
-
const currentDate = new Date();
|
|
250
|
-
currentDate.setHours(currentDate.getHours() + 1);
|
|
251
|
-
return currentDate.getTime() / 1000;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* If a signing key is set for this builder, recalculates the signature
|
|
255
|
-
*
|
|
256
|
-
* @returns {string} the signature value
|
|
257
|
-
*/
|
|
258
|
-
getSignature() {
|
|
259
|
-
if (this._signKey) {
|
|
260
|
-
this._signature = this.ethSignMsgHash();
|
|
261
|
-
}
|
|
262
|
-
return this._signature;
|
|
263
|
-
}
|
|
264
|
-
ethSignMsgHash() {
|
|
265
|
-
const data = this.getOperationHash();
|
|
266
|
-
(0, assert_1.default)(this._signKey);
|
|
267
|
-
const keyBuffer = Buffer.from(ethUtil.padToEven(this._signKey), 'hex');
|
|
268
|
-
if (keyBuffer.length !== 32) {
|
|
269
|
-
throw new Error('private key length is invalid');
|
|
270
|
-
}
|
|
271
|
-
const signatureInParts = ethUtil.ecsign(Buffer.from(ethUtil.padToEven(ethUtil.stripHexPrefix(data)), 'hex'), keyBuffer);
|
|
272
|
-
// Assemble strings from r, s and v
|
|
273
|
-
const r = ethUtil.setLengthLeft(signatureInParts.r, 32).toString('hex');
|
|
274
|
-
const s = ethUtil.setLengthLeft(signatureInParts.s, 32).toString('hex');
|
|
275
|
-
const v = ethUtil.stripHexPrefix(ethUtil.intToHex(signatureInParts.v));
|
|
276
|
-
// Concatenate the r, s and v parts to make the signature string
|
|
277
|
-
return ethUtil.addHexPrefix(r.concat(s, v));
|
|
278
|
-
}
|
|
279
|
-
decodeTransferData(data) {
|
|
280
|
-
const transferData = (0, utils_1.decodeTransferData)(data, this._isFirstSigner);
|
|
281
|
-
this._toAddress = transferData.to;
|
|
282
|
-
this._amount = transferData.amount;
|
|
283
|
-
this._expirationTime = transferData.expireTime;
|
|
284
|
-
this._sequenceId = transferData.sequenceId;
|
|
285
|
-
this._signature = transferData.signature;
|
|
286
|
-
if (transferData.data) {
|
|
287
|
-
this._data = transferData.data;
|
|
288
|
-
}
|
|
289
|
-
if (transferData.tokenContractAddress) {
|
|
290
|
-
this._tokenContractAddress = transferData.tokenContractAddress;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
getSignatureData() {
|
|
294
|
-
const method = this._tokenContractAddress
|
|
295
|
-
? ethereumjs_abi_1.default.methodID('sendMultiSigToken', walletUtil_1.sendMultiSigTokenTypes)
|
|
296
|
-
: ethereumjs_abi_1.default.methodID('sendMultiSig', walletUtil_1.sendMultiSigTypes);
|
|
297
|
-
const operationData = this.getOperationData();
|
|
298
|
-
const rawEncodedOperationData = ethereumjs_abi_1.default.rawEncode(...operationData);
|
|
299
|
-
return Buffer.concat([
|
|
300
|
-
method,
|
|
301
|
-
rawEncodedOperationData,
|
|
302
|
-
Buffer.from([this._coinUsesNonPackedEncodingForTxData ? 1 : 0]),
|
|
303
|
-
]);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
exports.TransferBuilder = TransferBuilder;
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHlEQUEyQztBQUMzQyxvRUFBeUM7QUFDekMsa0RBQXVCO0FBQ3ZCLDRDQUFpSDtBQUNqSCw4Q0FBb0Y7QUFDcEYsbUNBQXdIO0FBQ3hILDRDQUE4RDtBQUM5RCw2Q0FBeUU7QUFFekUsMkJBQTJCO0FBQzNCLE1BQWEsZUFBZTtJQWdCMUIsWUFBWSxjQUF1QixFQUFFLGFBQXVCO1FBZjNDLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWdCdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTiwwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBQyxJQUFZO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSxxQ0FBMkIsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNy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LENBQUM7Q0FDRjtBQTlURCwwQ0E4VEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBldGhVdGlsIGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IEJOIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IGNvaW5zLCBCYXNlQ29pbiwgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBFdGhlcmV1bU5ldHdvcmsgYXMgRXRoTGlrZU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGRlY29kZVRyYW5zZmVyRGF0YSwgc2VuZE11bHRpU2lnRGF0YSwgc2VuZE11bHRpU2lnVG9rZW5EYXRhLCBpc1ZhbGlkRXRoQWRkcmVzcywgaXNWYWxpZEFtb3VudCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZGVmYXVsdEFiaUNvZGVyLCBrZWNjYWsyNTYgfSBmcm9tICdldGhlcnMvbGliL3V0aWxzJztcbmltcG9ydCB7IHNlbmRNdWx0aVNpZ1Rva2VuVHlwZXMsIHNlbmRNdWx0aVNpZ1R5cGVzIH0gZnJvbSAnLi93YWxsZXRVdGlsJztcblxuLyoqIEVUSCB0cmFuc2ZlciBidWlsZGVyICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfRU1QVFlfSEVYX1ZBTFVFID0gJzB4JztcbiAgcHJvdGVjdGVkIF9hbW91bnQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b0FkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zZXF1ZW5jZUlkOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfc2lnbktleTogc3RyaW5nIHwgbnVsbDtcbiAgcHJvdGVjdGVkIF9leHBpcmF0aW9uVGltZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2lzRmlyc3RTaWduZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2RhdGE6IHN0cmluZztcbiAgcHJpdmF0ZSBfdG9rZW5Db250cmFjdEFkZHJlc3M/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvaW46IFJlYWRvbmx5PEJhc2VDb2luPjtcbiAgcHJpdmF0ZSBfY2hhaW5JZD86IHN0cmluZztcbiAgcHJpdmF0ZSBfY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YT86IGJvb2xlYW47XG4gIHByaXZhdGUgX3dhbGxldFZlcnNpb24/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcsIGlzRmlyc3RTaWduZXI/OiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNGaXJzdFNpZ25lciA9IGlzRmlyc3RTaWduZXI7XG4gICAgaWYgKHNlcmlhbGl6ZWREYXRhKSB7XG4gICAgICB0aGlzLmRlY29kZVRyYW5zZmVyRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxpemUgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3Igbm9uIG1hbmRhdG9yeSBmaWVsZHNcbiAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdGhpcy5nZXRFeHBpcmF0aW9uVGltZSgpO1xuICAgICAgdGhpcy5fZGF0YSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gc2V0IHRoZSBuYXRpdmUgY29pbiBvciBFUkMyMCB0b2tlbiB0byBiZSB0cmFuc2ZlcnJlZC5cbiAgICogVGhpcyBFUkMyMCB0b2tlbiBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbmV0d29yay5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvaW4gLSB0aGUgbmF0aXZlIGNvaW4gb3IgRVJDMjAgdG9rZW4gdG8gYmUgc2V0XG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSB0cmFuc2ZlciBidWlsZGVyIGluc3RhbmNlIG1vZGlmaWVkXG4gICAqL1xuICBjb2luKGNvaW46IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fY29pbiA9IGNvaW5zLmdldChjb2luKTtcbiAgICBpZiAodGhpcy5fY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSB0aGlzLl9jb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0SXNGaXJzdFNpZ25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNGaXJzdFNpZ25lciA/IHRoaXMuX2lzRmlyc3RTaWduZXIgOiBmYWxzZTtcbiAgfVxuXG4gIHdhbGxldFZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl93YWxsZXRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoYWRkaXRpb25hbERhdGE6IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgIHRoaXMuX2RhdGEgPSBhZGRpdGlvbmFsRGF0YTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFtb3VudChhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0byhhZGRyZXNzOiBzdHJpbmcpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIGlmIChpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fdG9BZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgY29udHJhY3RTZXF1ZW5jZUlkKGNvdW50ZXI6IG51bWJlcik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKGNvdW50ZXIgPj0gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fc2VxdWVuY2VJZCA9IGNvdW50ZXI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbnRyYWN0IHNlcXVlbmNlIGlkJyk7XG4gIH1cblxuICBrZXkoc2lnbktleTogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9zaWduS2V5ID0gc2lnbktleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGV4cGlyYXRpb25UaW1lKGRhdGU6IG51bWJlcik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKGRhdGUgPiAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSA9IGRhdGU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGV4cGlyYXRpb24gdGltZScpO1xuICB9XG5cbiAgaXNGaXJzdFNpZ25lcihpc0ZpcnN0U2lnbmVyOiBib29sZWFuKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9pc0ZpcnN0U2lnbmVyID0gaXNGaXJzdFNpZ25lcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRva2VuQ29udHJhY3RBZGRyZXNzKHRva2VuQ29udHJhY3RBZGRyZXNzOiBzdHJpbmcpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gdG9rZW5Db250cmFjdEFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRDb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhKGlzQ29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YTogYm9vbGVhbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YSA9IGlzQ29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fc2lnbktleSA9IG51bGw7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoc2lnbmF0dXJlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNpZ25BbmRCdWlsZChjaGFpbklkOiBzdHJpbmcsIGNvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGE/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcblxuICAgIC8vIElmIHRoZSBjb2luIHVzZXMgbm9uLXBhY2tlZCBlbmNvZGluZyBmb3IgdHggZGF0YSwgdGhlIG9wZXJhdGlvbiBoYXNoIGlzIGNhbGN1bGF0ZWQgZGlmZmVyZW50bHlcbiAgICAvLyBUaGlzIG5ldyBlbmNvZGluZyB0eXBlIGlzIGFwcGxpY2FibGUgb25seSBmb3IgbmF0aXZlIGNvaW5zIGFuZCBub3QgdG9rZW5zXG4gICAgdGhpcy5fY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YSA9XG4gICAgICBjb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhICYmIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID09PSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuaGFzTWFuZGF0b3J5RmllbGRzKCkpIHtcbiAgICAgIGlmICh0aGlzLl9pc0ZpcnN0U2lnbmVyKSB7XG4gICAgICAgIC8vIEZpcnN0IHNpZ25lciBzaWducyBkaWZmZXJlbnQgZGF0YSB0aGFuIHRoZSBzZWNvbmQgc2lnbmVyIGluIG11bHRpc2lnIGV2bSBjb250cmFjdHMuXG4gICAgICAgIHJldHVybiBldGhVdGlsLmFkZEhleFByZWZpeCh0aGlzLmdldFNpZ25hdHVyZURhdGEoKS50b1N0cmluZygnaGV4JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gc2VuZE11bHRpU2lnVG9rZW5EYXRhKFxuICAgICAgICAgICAgdGhpcy5fdG9BZGRyZXNzLFxuICAgICAgICAgICAgdGhpcy5fYW1vdW50LFxuICAgICAgICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgICAgICB0aGlzLmdldFNpZ25hdHVyZSgpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gc2VuZE11bHRpU2lnRGF0YShcbiAgICAgICAgICAgIHRoaXMuX3RvQWRkcmVzcyxcbiAgICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICAgIHRoaXMuX2RhdGEsXG4gICAgICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgICAgICB0aGlzLmdldFNpZ25hdHVyZSgpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgJ01pc3NpbmcgdHJhbnNmZXIgbWFuZGF0b3J5IGZpZWxkcy4gQW1vdW50LCBkZXN0aW5hdGlvbiAodG8pIGFkZHJlc3MgYW5kIHNlcXVlbmNlSUQgYXJlIG1hbmRhdG9yeSdcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNNYW5kYXRvcnlGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3RvQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NlcXVlbmNlSWQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW5zIHRoZSBwcm9wZXIgb3BlcmF0aW9uIGhhc2ggdG8gc2lnbiBlaXRoZXIgYSBzZW5kTXVsdGlTaWcgZGF0YVxuICAgKiBvciBhIHNlbmRNdWx0aVNpZ1Rva2VuIGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIG9wZXJhdGlvbiBoYXNoXG4gICAqL1xuICBwdWJsaWMgZ2V0T3BlcmF0aW9uSGFzaCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wZXJhdGlvbkRhdGEgPSB0aGlzLmdldE9wZXJhdGlvbkRhdGEoKTtcbiAgICBsZXQgb3BlcmF0aW9uSGFzaDogc3RyaW5nO1xuXG4gICAgaWYgKHRoaXMuX2NvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGEpIHtcbiAgICAgIGNvbnN0IHR5cGVzOiBzdHJpbmdbXSA9IG9wZXJhdGlvbkRhdGFbMF0gYXMgc3RyaW5nW107XG4gICAgICBjb25zdCB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10gPSBvcGVyYXRpb25EYXRhWzFdLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyA/IGl0ZW0gOiAnMHgnICsgaXRlbS50b1N0cmluZygnaGV4JylcbiAgICAgICk7XG4gICAgICBvcGVyYXRpb25IYXNoID0ga2VjY2FrMjU2KGRlZmF1bHRBYmlDb2Rlci5lbmNvZGUodHlwZXMsIHZhbHVlcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGUgY29pbiB1c2VzIHBhY2tlZCBlbmNvZGluZyBmb3IgdHggZGF0YSBvciBpdCBpcyBhIHRva2VuLCB0aGUgb3BlcmF0aW9uIGhhc2ggaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgRXRoZXJldW0gQUJJXG4gICAgICBvcGVyYXRpb25IYXNoID0gZXRoVXRpbC5idWZmZXJUb0hleChFdGhlcmV1bUFiaS5zb2xpZGl0eVNIQTMoLi4ub3BlcmF0aW9uRGF0YSkpO1xuICAgIH1cbiAgICByZXR1cm4gb3BlcmF0aW9uSGFzaDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRPcGVyYXRpb25EYXRhKCk6IChzdHJpbmcgfCBudW1iZXIgfCBCdWZmZXIpW11bXSB7XG4gICAgbGV0IG9wZXJhdGlvbkRhdGE7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRPcGVyYXRpb25IYXNoUHJlZml4KCk7XG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wZXJhdGlvbkRhdGEgPSBbXG4gICAgICAgIFsnc3RyaW5nJywgJ2FkZHJlc3MnLCAndWludCcsICdhZGRyZXNzJywgJ3VpbnQnLCAndWludCddLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZml4LFxuICAgICAgICAgIG5ldyBCTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRoaXMuX3RvQWRkcmVzcyksIDE2KSxcbiAgICAgICAgICB0aGlzLl9hbW91bnQsXG4gICAgICAgICAgbmV3IEJOKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MpLCAxNiksXG4gICAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgICAgXSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvQWRkcmVzcyA9IHRoaXMuX2NvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGFcbiAgICAgICAgPyB0aGlzLl90b0FkZHJlc3NcbiAgICAgICAgOiBuZXcgQk4oZXRoVXRpbC5zdHJpcEhleFByZWZpeCh0aGlzLl90b0FkZHJlc3MpLCAxNik7XG4gICAgICBvcGVyYXRpb25EYXRhID0gW1xuICAgICAgICBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYnl0ZXMnLCAndWludCcsICd1aW50J10sXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgdG9BZGRyZXNzLFxuICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICBCdWZmZXIuZnJvbShldGhVdGlsLnBhZFRvRXZlbihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRoaXMuX2RhdGEpKSB8fCAnJywgJ2hleCcpLFxuICAgICAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lLFxuICAgICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgIF0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gb3BlcmF0aW9uRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3BlcmF0aW9uSGFzaFByZWZpeCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl93YWxsZXRWZXJzaW9uID09PSA0KSB7XG4gICAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPyBgJHt0aGlzLl9jaGFpbklkfS1FUkMyMGAgOiBgJHt0aGlzLl9jaGFpbklkfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyA/IHRoaXMuZ2V0VG9rZW5PcGVyYXRpb25IYXNoUHJlZml4KCkgOiB0aGlzLmdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByZWZpeCB1c2VkIGluIGdlbmVyYXRpbmcgYW4gb3BlcmF0aW9uIGhhc2ggZm9yIHNlbmRpbmcgdG9rZW5zXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBzdHJpbmcgcHJlZml4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VG9rZW5PcGVyYXRpb25IYXNoUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLl9jb2luPy5uZXR3b3JrIGFzIEV0aExpa2VOZXR3b3JrKT8udG9rZW5PcGVyYXRpb25IYXNoUHJlZml4ID8/IGAke3RoaXMuX2NoYWluSWR9LUVSQzIwYCA/PyAnRVJDMjAnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyBuYXRpdmUgY29pbnNcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHN0cmluZyBwcmVmaXhcbiAgICovXG4gIHByb3RlY3RlZCBnZXROYXRpdmVPcGVyYXRpb25IYXNoUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLl9jb2luPy5uZXR3b3JrIGFzIEV0aExpa2VOZXR3b3JrKT8ubmF0aXZlQ29pbk9wZXJhdGlvbkhhc2hQcmVmaXggPz8gYCR7dGhpcy5fY2hhaW5JZH1gID8/ICdFVEhFUic7XG4gIH1cblxuICAvKiogUmV0dXJuIGFuIGV4cGlyYXRpb24gdGltZSwgaW4gc2Vjb25kcywgc2V0IHRvIG9uZSBob3VyIGZyb20gbm93XG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IGV4cGlyYXRpb24gdGltZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFeHBpcmF0aW9uVGltZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycyhjdXJyZW50RGF0ZS5nZXRIb3VycygpICsgMSk7XG4gICAgcmV0dXJuIGN1cnJlbnREYXRlLmdldFRpbWUoKSAvIDEwMDA7XG4gIH1cblxuICAvKipcbiAgICogSWYgYSBzaWduaW5nIGtleSBpcyBzZXQgZm9yIHRoaXMgYnVpbGRlciwgcmVjYWxjdWxhdGVzIHRoZSBzaWduYXR1cmVcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHNpZ25hdHVyZSB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFNpZ25hdHVyZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9zaWduS2V5KSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLmV0aFNpZ25Nc2dIYXNoKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmUhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV0aFNpZ25Nc2dIYXNoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0T3BlcmF0aW9uSGFzaCgpO1xuICAgIGFzc2VydCh0aGlzLl9zaWduS2V5KTtcbiAgICBjb25zdCBrZXlCdWZmZXIgPSBCdWZmZXIuZnJvbShldGhVdGlsLnBhZFRvRXZlbih0aGlzLl9zaWduS2V5KSwgJ2hleCcpO1xuICAgIGlmIChrZXlCdWZmZXIubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcml2YXRlIGtleSBsZW5ndGggaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgICBjb25zdCBzaWduYXR1cmVJblBhcnRzID0gZXRoVXRpbC5lY3NpZ24oXG4gICAgICBCdWZmZXIuZnJvbShldGhVdGlsLnBhZFRvRXZlbihldGhVdGlsLnN0cmlwSGV4UHJlZml4KGRhdGEpKSwgJ2hleCcpLFxuICAgICAga2V5QnVmZmVyXG4gICAgKTtcblxuICAgIC8vIEFzc2VtYmxlIHN0cmluZ3MgZnJvbSByLCBzIGFuZCB2XG4gICAgY29uc3QgciA9IGV0aFV0aWwuc2V0TGVuZ3RoTGVmdChzaWduYXR1cmVJblBhcnRzLnIsIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgcyA9IGV0aFV0aWwuc2V0TGVuZ3RoTGVmdChzaWduYXR1cmVJblBhcnRzLnMsIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgdiA9IGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgoZXRoVXRpbC5pbnRUb0hleChzaWduYXR1cmVJblBhcnRzLnYpKTtcblxuICAgIC8vIENvbmNhdGVuYXRlIHRoZSByLCBzIGFuZCB2IHBhcnRzIHRvIG1ha2UgdGhlIHNpZ25hdHVyZSBzdHJpbmdcbiAgICByZXR1cm4gZXRoVXRpbC5hZGRIZXhQcmVmaXgoci5jb25jYXQocywgdikpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNmZXJEYXRhID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEsIHRoaXMuX2lzRmlyc3RTaWduZXIpO1xuXG4gICAgdGhpcy5fdG9BZGRyZXNzID0gdHJhbnNmZXJEYXRhLnRvO1xuICAgIHRoaXMuX2Ftb3VudCA9IHRyYW5zZmVyRGF0YS5hbW91bnQ7XG4gICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSB0cmFuc2ZlckRhdGEuZXhwaXJlVGltZTtcbiAgICB0aGlzLl9zZXF1ZW5jZUlkID0gdHJhbnNmZXJEYXRhLnNlcXVlbmNlSWQ7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gdHJhbnNmZXJEYXRhLnNpZ25hdHVyZTtcblxuICAgIGlmICh0cmFuc2ZlckRhdGEuZGF0YSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHRyYW5zZmVyRGF0YS5kYXRhO1xuICAgIH1cblxuICAgIGlmICh0cmFuc2ZlckRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MpIHtcbiAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gdHJhbnNmZXJEYXRhLnRva2VuQ29udHJhY3RBZGRyZXNzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTaWduYXR1cmVEYXRhKCk6IEJ1ZmZlcjxBcnJheUJ1ZmZlcj4ge1xuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzXG4gICAgICA/IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdzZW5kTXVsdGlTaWdUb2tlbicsIHNlbmRNdWx0aVNpZ1Rva2VuVHlwZXMpXG4gICAgICA6IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdzZW5kTXVsdGlTaWcnLCBzZW5kTXVsdGlTaWdUeXBlcyk7XG4gICAgY29uc3Qgb3BlcmF0aW9uRGF0YSA9IHRoaXMuZ2V0T3BlcmF0aW9uRGF0YSgpO1xuICAgIGNvbnN0IHJhd0VuY29kZWRPcGVyYXRpb25EYXRhID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKC4uLm9wZXJhdGlvbkRhdGEpO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHJhd0VuY29kZWRPcGVyYXRpb25EYXRhLFxuICAgICAgQnVmZmVyLmZyb20oW3RoaXMuX2NvaW5Vc2VzTm9uUGFja2VkRW5jb2RpbmdGb3JUeERhdGEgPyAxIDogMF0pLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { BaseCoin } from '@bitgo/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
|
-
protected _walletVersion?: number;
|
|
16
|
-
abstract build(): string;
|
|
17
|
-
protected constructor(serializedData?: string);
|
|
18
|
-
expirationTime(date: number): this;
|
|
19
|
-
walletVersion(version: number): this;
|
|
20
|
-
key(signKey: string): this;
|
|
21
|
-
contractSequenceId(counter: number): this;
|
|
22
|
-
to(address: string): this;
|
|
23
|
-
from(address: string): this;
|
|
24
|
-
/** Return an expiration time, in seconds, set to one hour from now
|
|
25
|
-
*
|
|
26
|
-
* @returns {number} expiration time
|
|
27
|
-
*/
|
|
28
|
-
private static getExpirationTime;
|
|
29
|
-
/**
|
|
30
|
-
* If a signing key is set for this builder, recalculates the signature
|
|
31
|
-
*
|
|
32
|
-
* @returns {string} the signature value
|
|
33
|
-
*/
|
|
34
|
-
protected getSignature(): string;
|
|
35
|
-
/**
|
|
36
|
-
* Get the prefix used in generating an operation hash for sending native coins
|
|
37
|
-
*
|
|
38
|
-
* @returns the string prefix
|
|
39
|
-
*/
|
|
40
|
-
protected getNativeOperationHashPrefix(): string;
|
|
41
|
-
/**
|
|
42
|
-
* Obtains the proper operation hash to sign either a sendMultiSig data
|
|
43
|
-
* or a sendMultiSigToken data
|
|
44
|
-
*
|
|
45
|
-
* @returns {string} the operation hash
|
|
46
|
-
*/
|
|
47
|
-
private getOperationHash;
|
|
48
|
-
/**
|
|
49
|
-
* Signs the Message with the given private key
|
|
50
|
-
* @returns {string} 65 byte long raw signature
|
|
51
|
-
*/
|
|
52
|
-
protected ethSignMsgHash(): string;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=baseNFTTransferBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"baseNFTTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/baseNFTTransferBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,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;IAC5B,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;aAElB,KAAK,IAAI,MAAM;IAE/B,SAAS,aAAa,cAAc,CAAC,EAAE,MAAM;IAS7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,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;IAOhD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;CAOnC"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseNFTTransferBuilder = void 0;
|
|
4
|
-
const sdk_core_1 = require("@bitgo/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
|
-
walletVersion(version) {
|
|
26
|
-
this._walletVersion = version;
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
key(signKey) {
|
|
30
|
-
this._signKey = signKey;
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
contractSequenceId(counter) {
|
|
34
|
-
if (counter >= 0) {
|
|
35
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
36
|
-
this._sequenceId = counter;
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid contract sequence id');
|
|
40
|
-
}
|
|
41
|
-
to(address) {
|
|
42
|
-
if ((0, utils_1.isValidEthAddress)(address)) {
|
|
43
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
44
|
-
this._toAddress = address;
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
48
|
-
}
|
|
49
|
-
from(address) {
|
|
50
|
-
if ((0, utils_1.isValidEthAddress)(address)) {
|
|
51
|
-
this._signature = this._EMPTY_HEX_VALUE;
|
|
52
|
-
this._fromAddress = address;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
56
|
-
}
|
|
57
|
-
/** Return an expiration time, in seconds, set to one hour from now
|
|
58
|
-
*
|
|
59
|
-
* @returns {number} expiration time
|
|
60
|
-
*/
|
|
61
|
-
static getExpirationTime() {
|
|
62
|
-
const currentDate = new Date();
|
|
63
|
-
currentDate.setHours(currentDate.getHours() + 1);
|
|
64
|
-
return currentDate.getTime() / 1000;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* If a signing key is set for this builder, recalculates the signature
|
|
68
|
-
*
|
|
69
|
-
* @returns {string} the signature value
|
|
70
|
-
*/
|
|
71
|
-
getSignature() {
|
|
72
|
-
if (this._signKey) {
|
|
73
|
-
this._signature = this.ethSignMsgHash();
|
|
74
|
-
}
|
|
75
|
-
if (this._signature === null) {
|
|
76
|
-
throw new sdk_core_1.InvalidSignatureError('Null signature value');
|
|
77
|
-
}
|
|
78
|
-
return this._signature;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get the prefix used in generating an operation hash for sending native coins
|
|
82
|
-
*
|
|
83
|
-
* @returns the string prefix
|
|
84
|
-
*/
|
|
85
|
-
getNativeOperationHashPrefix() {
|
|
86
|
-
if (this._walletVersion === 4) {
|
|
87
|
-
return this._chainId ?? 'ETHER';
|
|
88
|
-
}
|
|
89
|
-
return this._nativeCoinOperationHashPrefix ?? this._chainId ?? 'ETHER';
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Obtains the proper operation hash to sign either a sendMultiSig data
|
|
93
|
-
* or a sendMultiSigToken data
|
|
94
|
-
*
|
|
95
|
-
* @returns {string} the operation hash
|
|
96
|
-
*/
|
|
97
|
-
getOperationHash() {
|
|
98
|
-
const hash = (0, utils_2.solidityKeccak256)(['string', 'address', 'uint', 'bytes', 'uint', 'uint'], [
|
|
99
|
-
this.getNativeOperationHashPrefix(),
|
|
100
|
-
this._toAddress,
|
|
101
|
-
'0', // dummy amount value
|
|
102
|
-
this._data,
|
|
103
|
-
this._expirationTime,
|
|
104
|
-
this._sequenceId,
|
|
105
|
-
]);
|
|
106
|
-
return hash;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Signs the Message with the given private key
|
|
110
|
-
* @returns {string} 65 byte long raw signature
|
|
111
|
-
*/
|
|
112
|
-
ethSignMsgHash() {
|
|
113
|
-
const signKey = new utils_2.SigningKey('0x'.concat(this._signKey));
|
|
114
|
-
const digest = signKey.signDigest(this.getOperationHash());
|
|
115
|
-
const rawSignature = (0, utils_2.joinSignature)(digest);
|
|
116
|
-
return rawSignature;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
exports.BaseNFTTransferBuilder = BaseNFTTransferBuilder;
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU5GVFRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJCdWlsZGVycy9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUFvRjtBQUNwRixvQ0FBNkM7QUFDN0MsNENBQWdGO0FBR2hGLE1BQXNCLHNCQUFzQjtJQWtCMUMsWUFBc0IsY0FBdUI7UUFqQjFCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWtCekMsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsMERBQTBEO1lBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFlO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtC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QU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBOUlELHdEQThJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLCBJbnZhbGlkU2lnbmF0dXJlRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgaXNWYWxpZEV0aEFkZHJlc3MgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBqb2luU2lnbmF0dXJlLCBzb2xpZGl0eUtlY2NhazI1NiwgU2lnbmluZ0tleSB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9FTVBUWV9IRVhfVkFMVUUgPSAnMHgnO1xuICAvLyBkdW1teSBhY2NvdW50IHZhbHVlLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNlbmRNdWx0aVNpZ1xuICBwcm90ZWN0ZWQgX2Zyb21BZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdG9BZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2VxdWVuY2VJZDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25LZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9leHBpcmF0aW9uVGltZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2RhdGE6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NvaW46IFJlYWRvbmx5PEJhc2VDb2luPjtcbiAgcHJvdGVjdGVkIF9uYXRpdmVDb2luT3BlcmF0aW9uSGFzaFByZWZpeD86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9jaGFpbklkPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3dhbGxldFZlcnNpb24/OiBudW1iZXI7XG5cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkKCk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICBpZiAoc2VyaWFsaXplZERhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBub24gbWFuZGF0b3J5IGZpZWxkc1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyLmdldEV4cGlyYXRpb25UaW1lKCk7XG4gICAgICB0aGlzLl9kYXRhID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgIH1cbiAgfVxuXG4gIGV4cGlyYXRpb25UaW1lKGRhdGU6IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChkYXRlID4gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBkYXRlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBleHBpcmF0aW9uIHRpbWUnKTtcbiAgfVxuXG4gIHdhbGxldFZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fd2FsbGV0VmVyc2lvbiA9IHZlcnNpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBrZXkoc2lnbktleTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fc2lnbktleSA9IHNpZ25LZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb250cmFjdFNlcXVlbmNlSWQoY291bnRlcjogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGNvdW50ZXIgPj0gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fc2VxdWVuY2VJZCA9IGNvdW50ZXI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbnRyYWN0IHNlcXVlbmNlIGlkJyk7XG4gIH1cblxuICB0byhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX3RvQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgfVxuXG4gIGZyb20oYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKGlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl9mcm9tQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gYW4gZXhwaXJhdGlvbiB0aW1lLCBpbiBzZWNvbmRzLCBzZXQgdG8gb25lIGhvdXIgZnJvbSBub3dcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gZXhwaXJhdGlvbiB0aW1lXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRFeHBpcmF0aW9uVGltZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycyhjdXJyZW50RGF0ZS5nZXRIb3VycygpICsgMSk7XG4gICAgcmV0dXJuIGN1cnJlbnREYXRlLmdldFRpbWUoKSAvIDEwMDA7XG4gIH1cblxuICAvKipcbiAgICogSWYgYSBzaWduaW5nIGtleSBpcyBzZXQgZm9yIHRoaXMgYnVpbGRlciwgcmVjYWxjdWxhdGVzIHRoZSBzaWduYXR1cmVcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHNpZ25hdHVyZSB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFNpZ25hdHVyZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9zaWduS2V5KSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLmV0aFNpZ25Nc2dIYXNoKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduYXR1cmUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkU2lnbmF0dXJlRXJyb3IoJ051bGwgc2lnbmF0dXJlIHZhbHVlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwcmVmaXggdXNlZCBpbiBnZW5lcmF0aW5nIGFuIG9wZXJhdGlvbiBoYXNoIGZvciBzZW5kaW5nIG5hdGl2ZSBjb2luc1xuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgc3RyaW5nIHByZWZpeFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fd2FsbGV0VmVyc2lvbiA9PT0gNCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoYWluSWQgPz8gJ0VUSEVSJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25hdGl2ZUNvaW5PcGVyYXRpb25IYXNoUHJlZml4ID8/IHRoaXMuX2NoYWluSWQgPz8gJ0VUSEVSJztcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW5zIHRoZSBwcm9wZXIgb3BlcmF0aW9uIGhhc2ggdG8gc2lnbiBlaXRoZXIgYSBzZW5kTXVsdGlTaWcgZGF0YVxuICAgKiBvciBhIHNlbmRNdWx0aVNpZ1Rva2VuIGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIG9wZXJhdGlvbiBoYXNoXG4gICAqL1xuICBwcml2YXRlIGdldE9wZXJhdGlvbkhhc2goKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoID0gc29saWRpdHlLZWNjYWsyNTYoXG4gICAgICBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYnl0ZXMnLCAndWludCcsICd1aW50J10sXG4gICAgICBbXG4gICAgICAgIHRoaXMuZ2V0TmF0aXZlT3BlcmF0aW9uSGFzaFByZWZpeCgpLFxuICAgICAgICB0aGlzLl90b0FkZHJlc3MsXG4gICAgICAgICcwJywgLy8gZHVtbXkgYW1vdW50IHZhbHVlXG4gICAgICAgIHRoaXMuX2RhdGEsXG4gICAgICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lLFxuICAgICAgICB0aGlzLl9zZXF1ZW5jZUlkLFxuICAgICAgXVxuICAgICk7XG4gICAgcmV0dXJuIGhhc2g7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdGhlIE1lc3NhZ2Ugd2l0aCB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXlcbiAgICogQHJldHVybnMge3N0cmluZ30gNjUgYnl0ZSBsb25nIHJhdyBzaWduYXR1cmVcbiAgICovXG4gIHByb3RlY3RlZCBldGhTaWduTXNnSGFzaCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNpZ25LZXkgPSBuZXcgU2lnbmluZ0tleSgnMHgnLmNvbmNhdCh0aGlzLl9zaWduS2V5KSk7XG4gICAgY29uc3QgZGlnZXN0ID0gc2lnbktleS5zaWduRGlnZXN0KHRoaXMuZ2V0T3BlcmF0aW9uSGFzaCgpKTtcbiAgICBjb25zdCByYXdTaWduYXR1cmUgPSBqb2luU2lnbmF0dXJlKGRpZ2VzdCk7XG5cbiAgICByZXR1cm4gcmF3U2lnbmF0dXJlO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|