@bitgo/abstract-eth 24.10.1 → 24.11.0

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 (121) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +191 -0
  3. package/dist/src/abstractEthLikeCoin.d.ts +95 -0
  4. package/dist/src/abstractEthLikeCoin.d.ts.map +1 -0
  5. package/dist/src/abstractEthLikeCoin.js +160 -0
  6. package/dist/src/abstractEthLikeNewCoins.d.ts +749 -0
  7. package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
  8. package/dist/src/abstractEthLikeNewCoins.js +2229 -0
  9. package/dist/src/ethLikeToken.d.ts +70 -0
  10. package/dist/src/ethLikeToken.d.ts.map +1 -0
  11. package/dist/src/ethLikeToken.js +360 -0
  12. package/dist/src/index.d.ts +5 -0
  13. package/dist/src/index.d.ts.map +1 -0
  14. package/dist/src/index.js +21 -0
  15. package/dist/src/lib/contractCall.d.ts +8 -0
  16. package/dist/src/lib/contractCall.d.ts.map +1 -0
  17. package/dist/src/lib/contractCall.js +17 -0
  18. package/dist/src/lib/iface.d.ts +133 -0
  19. package/dist/src/lib/iface.d.ts.map +1 -0
  20. package/dist/src/lib/iface.js +8 -0
  21. package/dist/src/lib/index.d.ts +16 -0
  22. package/dist/src/lib/index.d.ts.map +1 -0
  23. package/dist/src/lib/index.js +57 -0
  24. package/dist/src/lib/keyPair.d.ts +26 -0
  25. package/dist/src/lib/keyPair.d.ts.map +1 -0
  26. package/dist/src/lib/keyPair.js +65 -0
  27. package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
  28. package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
  29. package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
  30. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
  31. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
  33. package/dist/src/lib/messages/eip191/index.d.ts +3 -0
  34. package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
  35. package/dist/src/lib/messages/eip191/index.js +19 -0
  36. package/dist/src/lib/messages/index.d.ts +3 -0
  37. package/dist/src/lib/messages/index.d.ts.map +1 -0
  38. package/dist/src/lib/messages/index.js +19 -0
  39. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  40. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  41. package/dist/src/lib/messages/messageBuilderFactory.js +20 -0
  42. package/dist/src/lib/transaction.d.ts +67 -0
  43. package/dist/src/lib/transaction.d.ts.map +1 -0
  44. package/dist/src/lib/transaction.js +142 -0
  45. package/dist/src/lib/transactionBuilder.d.ts +251 -0
  46. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilder.js +742 -0
  48. package/dist/src/lib/transferBuilder.d.ts +76 -0
  49. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/transferBuilder.js +307 -0
  51. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
  52. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
  54. package/dist/src/lib/transferBuilders/index.d.ts +4 -0
  55. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
  56. package/dist/src/lib/transferBuilders/index.js +20 -0
  57. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
  58. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
  59. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
  60. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +16 -0
  61. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
  62. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +81 -0
  63. package/dist/src/lib/types.d.ts +39 -0
  64. package/dist/src/lib/types.d.ts.map +1 -0
  65. package/dist/src/lib/types.js +137 -0
  66. package/dist/src/lib/utils.d.ts +270 -0
  67. package/dist/src/lib/utils.d.ts.map +1 -0
  68. package/dist/src/lib/utils.js +717 -0
  69. package/dist/src/lib/walletUtil.d.ts +32 -0
  70. package/dist/src/lib/walletUtil.d.ts.map +1 -0
  71. package/dist/src/lib/walletUtil.js +35 -0
  72. package/dist/src/types.d.ts +9 -0
  73. package/dist/src/types.d.ts.map +1 -0
  74. package/dist/src/types.js +3 -0
  75. package/dist/test/index.d.ts +2 -0
  76. package/dist/test/index.d.ts.map +1 -0
  77. package/dist/test/index.js +18 -0
  78. package/dist/test/unit/coin.d.ts +8 -0
  79. package/dist/test/unit/coin.d.ts.map +1 -0
  80. package/dist/test/unit/coin.js +577 -0
  81. package/dist/test/unit/index.d.ts +6 -0
  82. package/dist/test/unit/index.d.ts.map +1 -0
  83. package/dist/test/unit/index.js +22 -0
  84. package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
  85. package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
  86. package/dist/test/unit/messages/eip191/eip191Message.js +137 -0
  87. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
  88. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +116 -0
  90. package/dist/test/unit/messages/fixtures.d.ts +24 -0
  91. package/dist/test/unit/messages/fixtures.d.ts.map +1 -0
  92. package/dist/test/unit/messages/fixtures.js +28 -0
  93. package/dist/test/unit/messages/index.d.ts +4 -0
  94. package/dist/test/unit/messages/index.d.ts.map +1 -0
  95. package/dist/test/unit/messages/index.js +20 -0
  96. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  97. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  98. package/dist/test/unit/messages/messageBuilderFactory.js +44 -0
  99. package/dist/test/unit/token.d.ts +2 -0
  100. package/dist/test/unit/token.d.ts.map +1 -0
  101. package/dist/test/unit/token.js +37 -0
  102. package/dist/test/unit/transaction.d.ts +3 -0
  103. package/dist/test/unit/transaction.d.ts.map +1 -0
  104. package/dist/test/unit/transaction.js +60 -0
  105. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
  106. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  107. package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
  108. package/dist/test/unit/transactionBuilder/index.d.ts +4 -0
  109. package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
  110. package/dist/test/unit/transactionBuilder/index.js +20 -0
  111. package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
  112. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder/send.js +197 -0
  114. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +10 -0
  115. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  116. package/dist/test/unit/transactionBuilder/walletInitialization.js +124 -0
  117. package/dist/test/unit/transferBuilder.d.ts +2 -0
  118. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  119. package/dist/test/unit/transferBuilder.js +76 -0
  120. package/dist/tsconfig.tsbuildinfo +1 -0
  121. package/package.json +8 -8
@@ -0,0 +1,76 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,307 @@
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=
@@ -0,0 +1,54 @@
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
@@ -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,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"}
@@ -0,0 +1,120 @@
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=
@@ -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"}