@bitgo-beta/sdk-coin-eth 4.4.1-beta.20 → 4.4.1-beta.2000

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 (164) hide show
  1. package/dist/src/erc20Token.d.ts +13 -5
  2. package/dist/src/erc20Token.d.ts.map +1 -1
  3. package/dist/src/erc20Token.js +67 -29
  4. package/dist/src/erc721Token.d.ts +60 -0
  5. package/dist/src/erc721Token.d.ts.map +1 -0
  6. package/dist/src/erc721Token.js +334 -0
  7. package/dist/src/erc7984Token.d.ts +187 -0
  8. package/dist/src/erc7984Token.d.ts.map +1 -0
  9. package/dist/src/erc7984Token.js +946 -0
  10. package/dist/src/eth.d.ts +25 -537
  11. package/dist/src/eth.d.ts.map +1 -1
  12. package/dist/src/eth.js +212 -1626
  13. package/dist/src/gteth.d.ts +0 -4
  14. package/dist/src/gteth.d.ts.map +1 -1
  15. package/dist/src/gteth.js +1 -11
  16. package/dist/src/hteth.d.ts +8 -0
  17. package/dist/src/hteth.d.ts.map +1 -0
  18. package/dist/src/hteth.js +14 -0
  19. package/dist/src/index.d.ts +4 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +10 -2
  22. package/dist/src/lib/index.d.ts +5 -13
  23. package/dist/src/lib/index.d.ts.map +1 -1
  24. package/dist/src/lib/index.js +18 -30
  25. package/dist/src/lib/messages/index.d.ts +3 -0
  26. package/dist/src/lib/messages/index.d.ts.map +1 -0
  27. package/dist/src/lib/messages/index.js +6 -0
  28. package/dist/src/lib/transactionBuilder.d.ts +10 -214
  29. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  30. package/dist/src/lib/transactionBuilder.js +23 -678
  31. package/dist/src/lib/transferBuilder.d.ts +2 -50
  32. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  33. package/dist/src/lib/transferBuilder.js +3 -199
  34. package/dist/src/lib/transferBuilders/index.d.ts +2 -3
  35. package/dist/src/lib/transferBuilders/index.d.ts.map +1 -1
  36. package/dist/src/lib/transferBuilders/index.js +7 -14
  37. package/dist/src/lib/walletUtil.d.ts +0 -25
  38. package/dist/src/lib/walletUtil.d.ts.map +1 -1
  39. package/dist/src/lib/walletUtil.js +2 -27
  40. package/dist/src/register.d.ts +2 -0
  41. package/dist/src/register.d.ts.map +1 -1
  42. package/dist/src/register.js +41 -2
  43. package/dist/src/sepeth.d.ts +8 -0
  44. package/dist/src/sepeth.d.ts.map +1 -0
  45. package/dist/src/sepeth.js +14 -0
  46. package/dist/src/teth.d.ts +0 -3
  47. package/dist/src/teth.d.ts.map +1 -1
  48. package/dist/src/teth.js +1 -8
  49. package/dist/test/fixtures/eth.d.ts +39 -0
  50. package/dist/test/fixtures/eth.d.ts.map +1 -0
  51. package/dist/test/fixtures/eth.js +262 -0
  52. package/dist/test/resources/erc1155Abi.d.ts +40 -0
  53. package/dist/test/resources/erc1155Abi.d.ts.map +1 -0
  54. package/dist/test/resources/erc1155Abi.js +329 -0
  55. package/dist/test/resources/erc721Abi.d.ts +12 -0
  56. package/dist/test/resources/erc721Abi.d.ts.map +1 -0
  57. package/dist/test/resources/erc721Abi.js +34 -0
  58. package/dist/test/resources/eth.d.ts +51 -0
  59. package/dist/test/resources/eth.d.ts.map +1 -0
  60. package/dist/test/resources/eth.js +72 -0
  61. package/dist/test/resources/nftEncodings.d.ts +4 -0
  62. package/dist/test/resources/nftEncodings.d.ts.map +1 -0
  63. package/dist/test/resources/nftEncodings.js +7 -0
  64. package/dist/test/resources/walletSimpleAbi.d.ts +12 -0
  65. package/dist/test/resources/walletSimpleAbi.d.ts.map +1 -0
  66. package/dist/test/resources/walletSimpleAbi.js +44 -0
  67. package/dist/test/unit/erc7984Token.d.ts +2 -0
  68. package/dist/test/unit/erc7984Token.d.ts.map +1 -0
  69. package/dist/test/unit/erc7984Token.js +1589 -0
  70. package/dist/test/unit/eth.d.ts +2 -0
  71. package/dist/test/unit/eth.d.ts.map +1 -0
  72. package/dist/test/unit/eth.js +2701 -0
  73. package/dist/test/unit/ethWallet.d.ts +2 -0
  74. package/dist/test/unit/ethWallet.d.ts.map +1 -0
  75. package/dist/test/unit/ethWallet.js +552 -0
  76. package/dist/test/unit/fixtures/ethMultiSigBackupKey.d.ts +4 -0
  77. package/dist/test/unit/fixtures/ethMultiSigBackupKey.d.ts.map +1 -0
  78. package/dist/test/unit/fixtures/ethMultiSigBackupKey.js +10 -0
  79. package/dist/test/unit/fixtures/ethTssBackupKey.d.ts +5 -0
  80. package/dist/test/unit/fixtures/ethTssBackupKey.d.ts.map +1 -0
  81. package/dist/test/unit/fixtures/ethTssBackupKey.js +25 -0
  82. package/dist/test/unit/getBuilder.d.ts +3 -0
  83. package/dist/test/unit/getBuilder.d.ts.map +1 -0
  84. package/dist/test/unit/getBuilder.js +10 -0
  85. package/dist/test/unit/keyPair.d.ts +2 -0
  86. package/dist/test/unit/keyPair.d.ts.map +1 -0
  87. package/dist/test/unit/keyPair.js +175 -0
  88. package/dist/test/unit/register.d.ts +2 -0
  89. package/dist/test/unit/register.d.ts.map +1 -0
  90. package/dist/test/unit/register.js +75 -0
  91. package/dist/test/unit/transaction.d.ts +2 -0
  92. package/dist/test/unit/transaction.d.ts.map +1 -0
  93. package/dist/test/unit/transaction.js +117 -0
  94. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +2 -0
  95. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
  96. package/dist/test/unit/transactionBuilder/addressInitialization.js +101 -0
  97. package/dist/test/unit/transactionBuilder/contractCall.d.ts +2 -0
  98. package/dist/test/unit/transactionBuilder/contractCall.d.ts.map +1 -0
  99. package/dist/test/unit/transactionBuilder/contractCall.js +101 -0
  100. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +2 -0
  101. package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
  102. package/dist/test/unit/transactionBuilder/decryptionDelegation.js +59 -0
  103. package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.d.ts +2 -0
  104. package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.d.ts.map +1 -0
  105. package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.js +136 -0
  106. package/dist/test/unit/transactionBuilder/flushCoins.d.ts +2 -0
  107. package/dist/test/unit/transactionBuilder/flushCoins.d.ts.map +1 -0
  108. package/dist/test/unit/transactionBuilder/flushCoins.js +133 -0
  109. package/dist/test/unit/transactionBuilder/flushTokens.d.ts +2 -0
  110. package/dist/test/unit/transactionBuilder/flushTokens.d.ts.map +1 -0
  111. package/dist/test/unit/transactionBuilder/flushTokens.js +298 -0
  112. package/dist/test/unit/transactionBuilder/send.d.ts +2 -0
  113. package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
  114. package/dist/test/unit/transactionBuilder/send.js +331 -0
  115. package/dist/test/unit/transactionBuilder/sendERC7984Token.d.ts +2 -0
  116. package/dist/test/unit/transactionBuilder/sendERC7984Token.d.ts.map +1 -0
  117. package/dist/test/unit/transactionBuilder/sendERC7984Token.js +361 -0
  118. package/dist/test/unit/transactionBuilder/sendNFT.d.ts +2 -0
  119. package/dist/test/unit/transactionBuilder/sendNFT.d.ts.map +1 -0
  120. package/dist/test/unit/transactionBuilder/sendNFT.js +295 -0
  121. package/dist/test/unit/transactionBuilder/singleSigSend.d.ts +2 -0
  122. package/dist/test/unit/transactionBuilder/singleSigSend.d.ts.map +1 -0
  123. package/dist/test/unit/transactionBuilder/singleSigSend.js +196 -0
  124. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +2 -0
  125. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
  126. package/dist/test/unit/transactionBuilder/walletInitialization.js +436 -0
  127. package/dist/test/unit/transferBuilder.d.ts +2 -0
  128. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  129. package/dist/test/unit/transferBuilder.js +124 -0
  130. package/dist/test/unit/utils.d.ts +2 -0
  131. package/dist/test/unit/utils.d.ts.map +1 -0
  132. package/dist/test/unit/utils.js +74 -0
  133. package/dist/tsconfig.tsbuildinfo +1 -0
  134. package/package.json +17 -19
  135. package/.eslintignore +0 -5
  136. package/.mocharc.yml +0 -8
  137. package/CHANGELOG.md +0 -229
  138. package/dist/src/lib/contractCall.d.ts +0 -8
  139. package/dist/src/lib/contractCall.d.ts.map +0 -1
  140. package/dist/src/lib/contractCall.js +0 -17
  141. package/dist/src/lib/iface.d.ts +0 -130
  142. package/dist/src/lib/iface.d.ts.map +0 -1
  143. package/dist/src/lib/iface.js +0 -8
  144. package/dist/src/lib/keyPair.d.ts +0 -26
  145. package/dist/src/lib/keyPair.d.ts.map +0 -1
  146. package/dist/src/lib/keyPair.js +0 -66
  147. package/dist/src/lib/transaction.d.ts +0 -64
  148. package/dist/src/lib/transaction.d.ts.map +0 -1
  149. package/dist/src/lib/transaction.js +0 -137
  150. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +0 -47
  151. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +0 -1
  152. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +0 -113
  153. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +0 -14
  154. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +0 -1
  155. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +0 -83
  156. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +0 -13
  157. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +0 -1
  158. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +0 -68
  159. package/dist/src/lib/types.d.ts +0 -39
  160. package/dist/src/lib/types.d.ts.map +0 -1
  161. package/dist/src/lib/types.js +0 -137
  162. package/dist/src/lib/utils.d.ts +0 -227
  163. package/dist/src/lib/utils.d.ts.map +0 -1
  164. package/dist/src/lib/utils.js +0 -577
@@ -1,64 +0,0 @@
1
- /**
2
- * Ethereum transaction model. This is the base model for all ethereum based coins (Celo, ETC, RSK, ETH)
3
- */
4
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
- import EthereumCommon from '@ethereumjs/common';
6
- import { BaseKey, Entry, BaseTransaction, TransactionType } from '@bitgo-beta/sdk-core';
7
- import { KeyPair } from './keyPair';
8
- import { EthLikeTransactionData, TxData } from './iface';
9
- export declare class Transaction extends BaseTransaction {
10
- protected _id: string;
11
- protected _inputs: Entry[];
12
- protected _outputs: Entry[];
13
- protected _signatures: string[];
14
- protected _type: TransactionType;
15
- protected _common: EthereumCommon;
16
- protected _transactionData?: EthLikeTransactionData;
17
- /**
18
- * return a new Transaction initialized with the serialized tx string
19
- *
20
- * @param coinConfig The coin configuration object
21
- * @param common network commons
22
- * @param serializedTx The serialized tx string with which to initialize the transaction
23
- * @returns a new transaction object
24
- */
25
- static fromSerialized(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, serializedTx: string): Transaction;
26
- /**
27
- * Public constructor.
28
- *
29
- * @param {Readonly<CoinConfig>} coinConfig
30
- * @param common the network commons
31
- * @param {TxData} txData The object transaction data or encoded transaction data
32
- */
33
- constructor(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, txData?: TxData);
34
- /**
35
- * Set the transaction data
36
- *
37
- * @param {TxData} txData The transaction data to set
38
- */
39
- setTransactionData(txData: TxData): void;
40
- /**
41
- * Update the internal fields based on the currently set transaction data, if there is any
42
- */
43
- protected updateFields(): void;
44
- /**
45
- * Set the transaction type
46
- *
47
- * @param {TransactionType} transactionType The transaction type to be set
48
- */
49
- setTransactionType(transactionType: TransactionType): void;
50
- /** @inheritdoc */
51
- canSign(key: BaseKey): boolean;
52
- /**
53
- * Sign the transaction with the provided key. It does not check if the signer is allowed to sign
54
- * it or not.
55
- *
56
- * @param {KeyPair} keyPair The key to sign the transaction with
57
- */
58
- sign(keyPair: KeyPair): Promise<void>;
59
- /** @inheritdoc */
60
- toBroadcastFormat(): string;
61
- /** @inheritdoc */
62
- toJson(): TxData;
63
- }
64
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,OAAO,EACP,KAAK,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMzD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;IAElC,SAAS,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAEpD;;;;;;;OAOG;WACW,cAAc,CAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,MAAM,GACnB,WAAW;IAId;;;;;;OAMG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM;IAQrF;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAmD9B;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAK9B;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;CAMjB"}
@@ -1,137 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Transaction = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const types_1 = require("./types");
6
- const utils_1 = require("./utils");
7
- const UNSUPPORTED_COIN_NAME = 'unsupported';
8
- class Transaction extends sdk_core_1.BaseTransaction {
9
- /**
10
- * Public constructor.
11
- *
12
- * @param {Readonly<CoinConfig>} coinConfig
13
- * @param common the network commons
14
- * @param {TxData} txData The object transaction data or encoded transaction data
15
- */
16
- constructor(coinConfig, common, txData) {
17
- super(coinConfig);
18
- this._common = common;
19
- if (txData) {
20
- this.setTransactionData(txData);
21
- }
22
- }
23
- /**
24
- * return a new Transaction initialized with the serialized tx string
25
- *
26
- * @param coinConfig The coin configuration object
27
- * @param common network commons
28
- * @param serializedTx The serialized tx string with which to initialize the transaction
29
- * @returns a new transaction object
30
- */
31
- static fromSerialized(coinConfig, common, serializedTx) {
32
- return new Transaction(coinConfig, common, types_1.EthTransactionData.fromSerialized(serializedTx, common).toJson());
33
- }
34
- /**
35
- * Set the transaction data
36
- *
37
- * @param {TxData} txData The transaction data to set
38
- */
39
- setTransactionData(txData) {
40
- this._transactionData = types_1.EthTransactionData.fromJson(txData, this._common);
41
- this.updateFields();
42
- }
43
- /**
44
- * Update the internal fields based on the currently set transaction data, if there is any
45
- */
46
- updateFields() {
47
- if (!this._transactionData) {
48
- return;
49
- }
50
- const txData = this._transactionData.toJson();
51
- if (txData.id) {
52
- this._id = txData.id;
53
- }
54
- this._type = utils_1.classifyTransaction(txData.data);
55
- // reset arrays to empty to ensure that they are only set with one set of fresh values
56
- this._inputs = [];
57
- this._outputs = [];
58
- this._signatures = [];
59
- if (utils_1.hasSignature(txData)) {
60
- this._signatures.push(utils_1.toStringSig({ v: txData.v, r: txData.r, s: txData.s }));
61
- }
62
- // only send transactions have inputs / outputs / signatures to parse
63
- if (this._type === sdk_core_1.TransactionType.Send ||
64
- this._type === sdk_core_1.TransactionType.SendERC721 ||
65
- this._type === sdk_core_1.TransactionType.SendERC1155) {
66
- const { to, amount, tokenContractAddress, signature } = utils_1.decodeTransferData(txData.data);
67
- let coinName;
68
- if (tokenContractAddress) {
69
- const token = utils_1.getToken(tokenContractAddress, this._coinConfig.network);
70
- coinName = token ? token.name : UNSUPPORTED_COIN_NAME;
71
- }
72
- else {
73
- coinName = this._coinConfig.name;
74
- }
75
- this.outputs.push({
76
- address: to,
77
- value: amount,
78
- coin: coinName,
79
- });
80
- this.inputs.push({
81
- address: txData.to,
82
- value: amount,
83
- coin: coinName,
84
- });
85
- this._signatures.push(signature);
86
- }
87
- }
88
- /**
89
- * Set the transaction type
90
- *
91
- * @param {TransactionType} transactionType The transaction type to be set
92
- */
93
- setTransactionType(transactionType) {
94
- this._type = transactionType;
95
- }
96
- /** @inheritdoc */
97
- canSign(key) {
98
- // TODO: implement this validation for the ethereum network
99
- return true;
100
- }
101
- /**
102
- * Sign the transaction with the provided key. It does not check if the signer is allowed to sign
103
- * it or not.
104
- *
105
- * @param {KeyPair} keyPair The key to sign the transaction with
106
- */
107
- async sign(keyPair) {
108
- if (!this._transactionData) {
109
- throw new sdk_core_1.InvalidTransactionError('No transaction data to sign');
110
- }
111
- if (!keyPair.getKeys().prv) {
112
- throw new sdk_core_1.SigningError('Missing private key');
113
- }
114
- await this._transactionData.sign(keyPair);
115
- const txData = this._transactionData.toJson();
116
- if (txData.id) {
117
- this._id = txData.id;
118
- }
119
- this._signatures.push(utils_1.toStringSig({ v: txData.v, r: txData.r, s: txData.s }));
120
- }
121
- /** @inheritdoc */
122
- toBroadcastFormat() {
123
- if (this._transactionData) {
124
- return this._transactionData.toSerialized();
125
- }
126
- throw new sdk_core_1.InvalidTransactionError('No transaction data to format');
127
- }
128
- /** @inheritdoc */
129
- toJson() {
130
- if (this._transactionData) {
131
- return this._transactionData.toJson();
132
- }
133
- throw new sdk_core_1.InvalidTransactionError('Empty transaction');
134
- }
135
- }
136
- exports.Transaction = Transaction;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLG1EQU84QjtBQUc5QixtQ0FBNkM7QUFDN0MsbUNBQXVHO0FBRXZHLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDO0FBRTVDLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBMEI5Qzs7Ozs7O09BTUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsTUFBc0IsRUFBRSxNQUFlO1FBQ25GLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUE3QkQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQzFCLFVBQWdDLEVBQ2hDLE1BQXNCLEVBQ3RCLFlBQW9CO1FBRXBCLE9BQU8sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSwwQkFBa0IsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQWlCRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsTUFBYztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsMEJBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNPLFlBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMs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QUFFLENBQUM7UUFDOUMsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsbUJBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDN0M7UUFDRCxNQUFNLElBQUksa0NBQXVCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2QztRQUNELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQTVKRCxrQ0E0SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV0aGVyZXVtIHRyYW5zYWN0aW9uIG1vZGVsLiBUaGlzIGlzIHRoZSBiYXNlIG1vZGVsIGZvciBhbGwgZXRoZXJldW0gYmFzZWQgY29pbnMgKENlbG8sIEVUQywgUlNLLCBFVEgpXG4gKi9cbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBFdGhlcmV1bUNvbW1vbiBmcm9tICdAZXRoZXJldW1qcy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgRW50cnksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEV0aExpa2VUcmFuc2FjdGlvbkRhdGEsIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgRXRoVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjbGFzc2lmeVRyYW5zYWN0aW9uLCBkZWNvZGVUcmFuc2ZlckRhdGEsIGdldFRva2VuLCBoYXNTaWduYXR1cmUsIHRvU3RyaW5nU2lnIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IFVOU1VQUE9SVEVEX0NPSU5fTkFNRSA9ICd1bnN1cHBvcnRlZCc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfaWQ6IHN0cmluZzsgLy8gVGhlIHRyYW5zYWN0aW9uIGlkIGFzIHNlZW4gaW4gdGhlIGJsb2NrY2hhaW5cbiAgcHJvdGVjdGVkIF9pbnB1dHM6IEVudHJ5W107XG4gIHByb3RlY3RlZCBfb3V0cHV0czogRW50cnlbXTtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHByb3RlY3RlZCBfY29tbW9uOiBFdGhlcmV1bUNvbW1vbjtcblxuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uRGF0YT86IEV0aExpa2VUcmFuc2FjdGlvbkRhdGE7XG5cbiAgLyoqXG4gICAqIHJldHVybiBhIG5ldyBUcmFuc2FjdGlvbiBpbml0aWFsaXplZCB3aXRoIHRoZSBzZXJpYWxpemVkIHR4IHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZyBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0gY29tbW9uIG5ldHdvcmsgY29tbW9uc1xuICAgKiBAcGFyYW0gc2VyaWFsaXplZFR4IFRoZSBzZXJpYWxpemVkIHR4IHN0cmluZyB3aXRoIHdoaWNoIHRvIGluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIGEgbmV3IHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VyaWFsaXplZChcbiAgICBjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPixcbiAgICBjb21tb246IEV0aGVyZXVtQ29tbW9uLFxuICAgIHNlcmlhbGl6ZWRUeDogc3RyaW5nXG4gICk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKGNvaW5Db25maWcsIGNvbW1vbiwgRXRoVHJhbnNhY3Rpb25EYXRhLmZyb21TZXJpYWxpemVkKHNlcmlhbGl6ZWRUeCwgY29tbW9uKS50b0pzb24oKSk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBjb2luQ29uZmlnXG4gICAqIEBwYXJhbSBjb21tb24gdGhlIG5ldHdvcmsgY29tbW9uc1xuICAgKiBAcGFyYW0ge1R4RGF0YX0gdHhEYXRhIFRoZSBvYmplY3QgdHJhbnNhY3Rpb24gZGF0YSBvciBlbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBjb21tb246IEV0aGVyZXVtQ29tbW9uLCB0eERhdGE/OiBUeERhdGEpIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9jb21tb24gPSBjb21tb247XG4gICAgaWYgKHR4RGF0YSkge1xuICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvbkRhdGEodHhEYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHhEYXRhfSB0eERhdGEgVGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvbkRhdGEodHhEYXRhOiBUeERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbkRhdGEgPSBFdGhUcmFuc2FjdGlvbkRhdGEuZnJvbUpzb24odHhEYXRhLCB0aGlzLl9jb21tb24pO1xuICAgIHRoaXMudXBkYXRlRmllbGRzKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBpbnRlcm5hbCBmaWVsZHMgYmFzZWQgb24gdGhlIGN1cnJlbnRseSBzZXQgdHJhbnNhY3Rpb24gZGF0YSwgaWYgdGhlcmUgaXMgYW55XG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHhEYXRhID0gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvSnNvbigpO1xuICAgIGlmICh0eERhdGEuaWQpIHtcbiAgICAgIHRoaXMuX2lkID0gdHhEYXRhLmlkO1xuICAgIH1cbiAgICB0aGlzLl90eXBlID0gY2xhc3NpZnlUcmFuc2FjdGlvbih0eERhdGEuZGF0YSk7XG5cbiAgICAvLyByZXNldCBhcnJheXMgdG8gZW1wdHkgdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgb25seSBzZXQgd2l0aCBvbmUgc2V0IG9mIGZyZXNoIHZhbHVlc1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG5cbiAgICBpZiAoaGFzU2lnbmF0dXJlKHR4RGF0YSkpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0b1N0cmluZ1NpZyh7IHY6IHR4RGF0YS52ISwgcjogdHhEYXRhLnIhLCBzOiB0eERhdGEucyEgfSkpO1xuICAgIH1cblxuICAgIC8vIG9ubHkgc2VuZCB0cmFuc2FjdGlvbnMgaGF2ZSBpbnB1dHMgLyBvdXRwdXRzIC8gc2lnbmF0dXJlcyB0byBwYXJzZVxuICAgIGlmIChcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kIHx8XG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzcyMSB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkMxMTU1XG4gICAgKSB7XG4gICAgICBjb25zdCB7IHRvLCBhbW91bnQsIHRva2VuQ29udHJhY3RBZGRyZXNzLCBzaWduYXR1cmUgfSA9IGRlY29kZVRyYW5zZmVyRGF0YSh0eERhdGEuZGF0YSk7XG4gICAgICBsZXQgY29pbk5hbWU6IHN0cmluZztcbiAgICAgIGlmICh0b2tlbkNvbnRyYWN0QWRkcmVzcykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFRva2VuKHRva2VuQ29udHJhY3RBZGRyZXNzLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmspO1xuICAgICAgICBjb2luTmFtZSA9IHRva2VuID8gdG9rZW4ubmFtZSA6IFVOU1VQUE9SVEVEX0NPSU5fTkFNRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvaW5OYW1lID0gdGhpcy5fY29pbkNvbmZpZy5uYW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm91dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHRvLFxuICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogdHhEYXRhLnRvISwgLy8gdGhlIHNlbmRpbmcgd2FsbGV0IGNvbnRyYWN0IGlzIHRoZSByZWNpcGllbnQgb2YgdGhlIG91dGVyIHRyYW5zYWN0aW9uXG4gICAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyB2YWxpZGF0aW9uIGZvciB0aGUgZXRoZXJldW0gbmV0d29ya1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gdGhlIHRyYW5zYWN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGtleS4gSXQgZG9lcyBub3QgY2hlY2sgaWYgdGhlIHNpZ25lciBpcyBhbGxvd2VkIHRvIHNpZ25cbiAgICogaXQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgVGhlIGtleSB0byBzaWduIHRoZSB0cmFuc2FjdGlvbiB3aXRoXG4gICAqL1xuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdObyB0cmFuc2FjdGlvbiBkYXRhIHRvIHNpZ24nKTtcbiAgICB9XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnNpZ24oa2V5UGFpcik7XG4gICAgY29uc3QgdHhEYXRhID0gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvSnNvbigpO1xuICAgIGlmICh0eERhdGEuaWQpIHtcbiAgICAgIHRoaXMuX2lkID0gdHhEYXRhLmlkO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9TdHJpbmdTaWcoeyB2OiB0eERhdGEudiEsIHI6IHR4RGF0YS5yISwgczogdHhEYXRhLnMhIH0pKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRhdGEudG9TZXJpYWxpemVkKCk7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBmb3JtYXQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvSnNvbigpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,47 +0,0 @@
1
- export declare abstract class BaseNFTTransferBuilder {
2
- protected readonly _EMPTY_HEX_VALUE = "0x";
3
- protected _fromAddress: string;
4
- protected _toAddress: string;
5
- protected _sequenceId: number;
6
- protected _signKey: string;
7
- protected _expirationTime: number;
8
- protected _signature: string;
9
- protected _data: string;
10
- protected _tokenContractAddress: string;
11
- protected constructor(serializedData?: string);
12
- expirationTime(date: number): this;
13
- key(signKey: string): this;
14
- contractSequenceId(counter: number): this;
15
- to(address: string): this;
16
- from(address: string): this;
17
- /** Return an expiration time, in seconds, set to one hour from now
18
- *
19
- * @returns {number} expiration time
20
- */
21
- private static getExpirationTime;
22
- /**
23
- * If a signing key is set for this builder, recalculates the signature
24
- *
25
- * @returns {string} the signature value
26
- */
27
- protected getSignature(): string;
28
- /**
29
- * Get the prefix used in generating an operation hash for sending native coins
30
- *
31
- * @returns the string prefix
32
- */
33
- protected getNativeOperationHashPrefix(): string;
34
- /**
35
- * Obtains the proper operation hash to sign either a sendMultiSig data
36
- * or a sendMultiSigToken data
37
- *
38
- * @returns {string} the operation hash
39
- */
40
- private getOperationHash;
41
- /**
42
- * Signs the Message with the given private key
43
- * @returns {string} 65 byte long raw signature
44
- */
45
- protected ethSignMsgHash(): string;
46
- }
47
- //# sourceMappingURL=baseNFTTransferBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseNFTTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/baseNFTTransferBuilder.ts"],"names":[],"mappings":"AAIA,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;IAExC,SAAS,aAAa,cAAc,CAAC,EAAE,MAAM;IAS7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASzC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM;IAUhC;;;;OAIG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;IAIhD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;CAOnC"}
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseNFTTransferBuilder = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const utils_1 = require("../utils");
6
- const utils_2 = require("ethers/lib/utils");
7
- class BaseNFTTransferBuilder {
8
- constructor(serializedData) {
9
- this._EMPTY_HEX_VALUE = '0x';
10
- if (serializedData === undefined) {
11
- // initialize with default values for non mandatory fields
12
- this._expirationTime = BaseNFTTransferBuilder.getExpirationTime();
13
- this._data = this._EMPTY_HEX_VALUE;
14
- this._signature = this._EMPTY_HEX_VALUE;
15
- }
16
- }
17
- expirationTime(date) {
18
- if (date > 0) {
19
- this._signature = this._EMPTY_HEX_VALUE;
20
- this._expirationTime = date;
21
- return this;
22
- }
23
- throw new sdk_core_1.InvalidParameterValueError('Invalid expiration time');
24
- }
25
- key(signKey) {
26
- this._signKey = signKey;
27
- return this;
28
- }
29
- contractSequenceId(counter) {
30
- if (counter >= 0) {
31
- this._signature = this._EMPTY_HEX_VALUE;
32
- this._sequenceId = counter;
33
- return this;
34
- }
35
- throw new sdk_core_1.InvalidParameterValueError('Invalid contract sequence id');
36
- }
37
- to(address) {
38
- if (utils_1.isValidEthAddress(address)) {
39
- this._signature = this._EMPTY_HEX_VALUE;
40
- this._toAddress = address;
41
- return this;
42
- }
43
- throw new sdk_core_1.InvalidParameterValueError('Invalid address');
44
- }
45
- from(address) {
46
- if (utils_1.isValidEthAddress(address)) {
47
- this._signature = this._EMPTY_HEX_VALUE;
48
- this._fromAddress = address;
49
- return this;
50
- }
51
- throw new sdk_core_1.InvalidParameterValueError('Invalid address');
52
- }
53
- /** Return an expiration time, in seconds, set to one hour from now
54
- *
55
- * @returns {number} expiration time
56
- */
57
- static getExpirationTime() {
58
- const currentDate = new Date();
59
- currentDate.setHours(currentDate.getHours() + 1);
60
- return currentDate.getTime() / 1000;
61
- }
62
- /**
63
- * If a signing key is set for this builder, recalculates the signature
64
- *
65
- * @returns {string} the signature value
66
- */
67
- getSignature() {
68
- if (this._signKey) {
69
- this._signature = this.ethSignMsgHash();
70
- }
71
- if (this._signature == null) {
72
- throw new sdk_core_1.InvalidSignatureError('Null signature value');
73
- }
74
- return this._signature;
75
- }
76
- /**
77
- * Get the prefix used in generating an operation hash for sending native coins
78
- *
79
- * @returns the string prefix
80
- */
81
- getNativeOperationHashPrefix() {
82
- return 'ETHER';
83
- }
84
- /**
85
- * Obtains the proper operation hash to sign either a sendMultiSig data
86
- * or a sendMultiSigToken data
87
- *
88
- * @returns {string} the operation hash
89
- */
90
- getOperationHash() {
91
- const hash = utils_2.solidityKeccak256(['string', 'address', 'uint', 'bytes', 'uint', 'uint'], [
92
- this.getNativeOperationHashPrefix(),
93
- this._toAddress,
94
- '0',
95
- this._data,
96
- this._expirationTime,
97
- this._sequenceId,
98
- ]);
99
- return hash;
100
- }
101
- /**
102
- * Signs the Message with the given private key
103
- * @returns {string} 65 byte long raw signature
104
- */
105
- ethSignMsgHash() {
106
- const signKey = new utils_2.SigningKey('0x'.concat(this._signKey));
107
- const digest = signKey.signDigest(this.getOperationHash());
108
- const rawSignature = utils_2.joinSignature(digest);
109
- return rawSignature;
110
- }
111
- }
112
- exports.BaseNFTTransferBuilder = BaseNFTTransferBuilder;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU5GVFRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJCdWlsZGVycy9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUF5RjtBQUN6RixvQ0FBNkM7QUFDN0MsNENBQWdGO0FBRWhGLE1BQXNCLHNCQUFzQjtJQVkxQyxZQUFzQixjQUF1QjtRQVgxQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFZekMsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ2hDLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxHQUFHLENBQUMsT0FBZTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFlO1FBQ2hDLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEVBQUUsQ0FBQyxPQUFlO1FBQ2hCLElBQUkseUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZTtRQUNsQixJQUFJLHlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUkscUNBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLGlCQUFpQjtRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFlBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUMzQixNQUFNLElBQUksZ0NBQXFCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLDRCQUE0QjtRQUNwQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxnQkFBZ0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcseUJBQWlCLENBQzVCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFDdEQ7WUFDRSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFVBQVU7WUFDZixHQUFHO1lBQ0gsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsV0FBVztTQUNqQixDQUNGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDTyxjQUFjO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxxQkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQWhJRCx3REFnSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciwgSW52YWxpZFNpZ25hdHVyZUVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgaXNWYWxpZEV0aEFkZHJlc3MgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBqb2luU2lnbmF0dXJlLCBzb2xpZGl0eUtlY2NhazI1NiwgU2lnbmluZ0tleSB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU5GVFRyYW5zZmVyQnVpbGRlciB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfRU1QVFlfSEVYX1ZBTFVFID0gJzB4JztcbiAgLy8gZHVtbXkgYWNjb3VudCB2YWx1ZSwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTZW5kTXVsdGlTaWdcbiAgcHJvdGVjdGVkIF9mcm9tQWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RvQWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NlcXVlbmNlSWQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9zaWduS2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZXhwaXJhdGlvblRpbWU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9kYXRhOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICBpZiAoc2VyaWFsaXplZERhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBub24gbWFuZGF0b3J5IGZpZWxkc1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyLmdldEV4cGlyYXRpb25UaW1lKCk7XG4gICAgICB0aGlzLl9kYXRhID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgIH1cbiAgfVxuXG4gIGV4cGlyYXRpb25UaW1lKGRhdGU6IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChkYXRlID4gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSBkYXRlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBleHBpcmF0aW9uIHRpbWUnKTtcbiAgfVxuXG4gIGtleShzaWduS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9zaWduS2V5ID0gc2lnbktleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbnRyYWN0U2VxdWVuY2VJZChjb3VudGVyOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoY291bnRlciA+PSAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmUgPSB0aGlzLl9FTVBUWV9IRVhfVkFMVUU7XG4gICAgICB0aGlzLl9zZXF1ZW5jZUlkID0gY291bnRlcjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgY29udHJhY3Qgc2VxdWVuY2UgaWQnKTtcbiAgfVxuXG4gIHRvKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmIChpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlID0gdGhpcy5fRU1QVFlfSEVYX1ZBTFVFO1xuICAgICAgdGhpcy5fdG9BZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgZnJvbShhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuX0VNUFRZX0hFWF9WQUxVRTtcbiAgICAgIHRoaXMuX2Zyb21BZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgLyoqIFJldHVybiBhbiBleHBpcmF0aW9uIHRpbWUsIGluIHNlY29uZHMsIHNldCB0byBvbmUgaG91ciBmcm9tIG5vd1xuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBleHBpcmF0aW9uIHRpbWVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldEV4cGlyYXRpb25UaW1lKCk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKGN1cnJlbnREYXRlLmdldEhvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gY3VycmVudERhdGUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhIHNpZ25pbmcga2V5IGlzIHNldCBmb3IgdGhpcyBidWlsZGVyLCByZWNhbGN1bGF0ZXMgdGhlIHNpZ25hdHVyZVxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgc2lnbmF0dXJlIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U2lnbmF0dXJlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3NpZ25LZXkpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHRoaXMuZXRoU2lnbk1zZ0hhc2goKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFNpZ25hdHVyZUVycm9yKCdOdWxsIHNpZ25hdHVyZSB2YWx1ZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyBuYXRpdmUgY29pbnNcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHN0cmluZyBwcmVmaXhcbiAgICovXG4gIHByb3RlY3RlZCBnZXROYXRpdmVPcGVyYXRpb25IYXNoUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdFVEhFUic7XG4gIH1cblxuICAvKipcbiAgICogT2J0YWlucyB0aGUgcHJvcGVyIG9wZXJhdGlvbiBoYXNoIHRvIHNpZ24gZWl0aGVyIGEgc2VuZE11bHRpU2lnIGRhdGFcbiAgICogb3IgYSBzZW5kTXVsdGlTaWdUb2tlbiBkYXRhXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBvcGVyYXRpb24gaGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRPcGVyYXRpb25IYXNoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzaCA9IHNvbGlkaXR5S2VjY2FrMjU2KFxuICAgICAgWydzdHJpbmcnLCAnYWRkcmVzcycsICd1aW50JywgJ2J5dGVzJywgJ3VpbnQnLCAndWludCddLFxuICAgICAgW1xuICAgICAgICB0aGlzLmdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKSxcbiAgICAgICAgdGhpcy5fdG9BZGRyZXNzLFxuICAgICAgICAnMCcsIC8vIGR1bW15IGFtb3VudCB2YWx1ZVxuICAgICAgICB0aGlzLl9kYXRhLFxuICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgIF1cbiAgICApO1xuICAgIHJldHVybiBoYXNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRoZSBNZXNzYWdlIHdpdGggdGhlIGdpdmVuIHByaXZhdGUga2V5XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IDY1IGJ5dGUgbG9uZyByYXcgc2lnbmF0dXJlXG4gICAqL1xuICBwcm90ZWN0ZWQgZXRoU2lnbk1zZ0hhc2goKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWduS2V5ID0gbmV3IFNpZ25pbmdLZXkoJzB4Jy5jb25jYXQodGhpcy5fc2lnbktleSkpO1xuICAgIGNvbnN0IGRpZ2VzdCA9IHNpZ25LZXkuc2lnbkRpZ2VzdCh0aGlzLmdldE9wZXJhdGlvbkhhc2goKSk7XG4gICAgY29uc3QgcmF3U2lnbmF0dXJlID0gam9pblNpZ25hdHVyZShkaWdlc3QpO1xuXG4gICAgcmV0dXJuIHJhd1NpZ25hdHVyZTtcbiAgfVxufVxuIl19
@@ -1,14 +0,0 @@
1
- import { BaseNFTTransferBuilder } from './baseNFTTransferBuilder';
2
- export declare class ERC1155TransferBuilder extends BaseNFTTransferBuilder {
3
- private _tokenIds;
4
- private _values;
5
- private _bytes;
6
- constructor(serializedData?: string);
7
- tokenContractAddress(address: string): ERC1155TransferBuilder;
8
- entry(tokenId: number, value: number): ERC1155TransferBuilder;
9
- bytes(bytesInNumber: number): ERC1155TransferBuilder;
10
- signAndBuild(): string;
11
- private hasMandatoryFields;
12
- private decodeTransferData;
13
- }
14
- //# sourceMappingURL=transferBuilderERC1155.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transferBuilderERC1155.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/transferBuilderERC1155.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,qBAAa,sBAAuB,SAAQ,sBAAsB;IAChE,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAEX,cAAc,CAAC,EAAE,MAAM;IAWnC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;IAQ7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAM7D,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,sBAAsB;IAKpD,YAAY,IAAI,MAAM;IA4BtB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;CAc3B"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ERC1155TransferBuilder = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const contractCall_1 = require("../contractCall");
6
- const utils_1 = require("../utils");
7
- const walletUtil_1 = require("../walletUtil");
8
- const baseNFTTransferBuilder_1 = require("./baseNFTTransferBuilder");
9
- const utils_2 = require("ethers/lib/utils");
10
- class ERC1155TransferBuilder extends baseNFTTransferBuilder_1.BaseNFTTransferBuilder {
11
- constructor(serializedData) {
12
- super(serializedData);
13
- this.bytes(0);
14
- if (serializedData) {
15
- this.decodeTransferData(serializedData);
16
- }
17
- else {
18
- this._tokenIds = [];
19
- this._values = [];
20
- }
21
- }
22
- tokenContractAddress(address) {
23
- if (utils_1.isValidEthAddress(address)) {
24
- this._tokenContractAddress = address;
25
- return this;
26
- }
27
- throw new sdk_core_1.InvalidParameterValueError('Invalid address');
28
- }
29
- entry(tokenId, value) {
30
- this._tokenIds.push(tokenId.toString());
31
- this._values.push(value.toString());
32
- return this;
33
- }
34
- bytes(bytesInNumber) {
35
- this._bytes = utils_2.hexZeroPad(utils_2.hexlify(bytesInNumber), 32);
36
- return this;
37
- }
38
- signAndBuild() {
39
- const hasMandatoryFields = this.hasMandatoryFields();
40
- if (hasMandatoryFields) {
41
- if (this._tokenIds.length === 1) {
42
- const values = [this._fromAddress, this._toAddress, this._tokenIds[0], this._values[0], this._bytes];
43
- const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC1155SafeTransferTypeMethodId, walletUtil_1.ERC1155SafeTransferTypes, values);
44
- this._data = contractCall.serialize();
45
- }
46
- else {
47
- const values = [this._fromAddress, this._toAddress, this._tokenIds, this._values, this._bytes];
48
- const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC1155BatchTransferTypeMethodId, walletUtil_1.ERC1155BatchTransferTypes, values);
49
- this._data = contractCall.serialize();
50
- }
51
- return utils_1.sendMultiSigData(this._tokenContractAddress, '0', // dummy amount value
52
- this._data, this._expirationTime, this._sequenceId, this.getSignature());
53
- }
54
- throw new sdk_core_1.BuildTransactionError(`Missing transfer mandatory fields.
55
- Destination (to) address, source (from) address, sequenceID, the token contract address, tokenIDs and their values are mandatory`);
56
- }
57
- hasMandatoryFields() {
58
- return (this._tokenIds !== undefined &&
59
- this._tokenIds.length !== 0 &&
60
- this._values.length !== 0 &&
61
- this._tokenIds.length === this._values.length &&
62
- this._toAddress !== undefined &&
63
- this._fromAddress !== undefined &&
64
- this._tokenContractAddress !== undefined &&
65
- this._sequenceId !== undefined);
66
- }
67
- decodeTransferData(data) {
68
- const transferData = utils_1.decodeERC1155TransferData(data);
69
- this._toAddress = transferData.to;
70
- this._fromAddress = transferData.from;
71
- this._expirationTime = transferData.expireTime;
72
- this._sequenceId = transferData.sequenceId;
73
- this._signature = transferData.signature;
74
- this._tokenContractAddress = transferData.tokenContractAddress;
75
- this._tokenIds = transferData.tokenIds;
76
- this._values = transferData.values;
77
- if (transferData.data) {
78
- this._data = transferData.data;
79
- }
80
- }
81
- }
82
- exports.ERC1155TransferBuilder = ERC1155TransferBuilder;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyRVJDMTE1NS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJCdWlsZGVycy90cmFuc2ZlckJ1aWxkZXJFUkMxMTU1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUF5RjtBQUN6RixrREFBK0M7QUFDL0Msb0NBQTBGO0FBQzFGLDhDQUt1QjtBQUN2QixxRUFBa0U7QUFDbEUsNENBQXVEO0FBRXZELE1BQWEsc0JBQXVCLFNBQVEsK0NBQXNCO0lBS2hFLFlBQVksY0FBdUI7UUFDakMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWU7UUFDbEMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUkscUNBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFhO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVE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Q0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztDQUNGO0FBekZELHdEQXlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb250cmFjdENhbGwgfSBmcm9tICcuLi9jb250cmFjdENhbGwnO1xuaW1wb3J0IHsgZGVjb2RlRVJDMTE1NVRyYW5zZmVyRGF0YSwgaXNWYWxpZEV0aEFkZHJlc3MsIHNlbmRNdWx0aVNpZ0RhdGEgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBFUkMxMTU1QmF0Y2hUcmFuc2ZlclR5cGVzLFxuICBFUkMxMTU1U2FmZVRyYW5zZmVyVHlwZXMsXG4gIEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZU1ldGhvZElkLFxuICBFUkMxMTU1U2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkLFxufSBmcm9tICcuLi93YWxsZXRVdGlsJztcbmltcG9ydCB7IEJhc2VORlRUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2Jhc2VORlRUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgaGV4bGlmeSwgaGV4WmVyb1BhZCB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRVJDMTE1NVRyYW5zZmVyQnVpbGRlciBleHRlbmRzIEJhc2VORlRUcmFuc2ZlckJ1aWxkZXIge1xuICBwcml2YXRlIF90b2tlbklkczogc3RyaW5nW107XG4gIHByaXZhdGUgX3ZhbHVlczogc3RyaW5nW107XG4gIHByaXZhdGUgX2J5dGVzOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzZXJpYWxpemVkRGF0YSk7XG4gICAgdGhpcy5ieXRlcygwKTtcbiAgICBpZiAoc2VyaWFsaXplZERhdGEpIHtcbiAgICAgIHRoaXMuZGVjb2RlVHJhbnNmZXJEYXRhKHNlcmlhbGl6ZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdG9rZW5JZHMgPSBbXTtcbiAgICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHRva2VuQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXIge1xuICAgIGlmIChpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gIH1cblxuICBlbnRyeSh0b2tlbklkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBFUkMxMTU1VHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl90b2tlbklkcy5wdXNoKHRva2VuSWQudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdmFsdWVzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBieXRlcyhieXRlc0luTnVtYmVyOiBudW1iZXIpOiBFUkMxMTU1VHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9ieXRlcyA9IGhleFplcm9QYWQoaGV4bGlmeShieXRlc0luTnVtYmVyKSwgMzIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2lnbkFuZEJ1aWxkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzTWFuZGF0b3J5RmllbGRzID0gdGhpcy5oYXNNYW5kYXRvcnlGaWVsZHMoKTtcbiAgICBpZiAoaGFzTWFuZGF0b3J5RmllbGRzKSB7XG4gICAgICBpZiAodGhpcy5fdG9rZW5JZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IFt0aGlzLl9mcm9tQWRkcmVzcywgdGhpcy5fdG9BZGRyZXNzLCB0aGlzLl90b2tlbklkc1swXSwgdGhpcy5fdmFsdWVzWzBdLCB0aGlzLl9ieXRlc107XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IG5ldyBDb250cmFjdENhbGwoRVJDMTE1NVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCwgRVJDMTE1NVNhZmVUcmFuc2ZlclR5cGVzLCB2YWx1ZXMpO1xuICAgICAgICB0aGlzLl9kYXRhID0gY29udHJhY3RDYWxsLnNlcmlhbGl6ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW3RoaXMuX2Zyb21BZGRyZXNzLCB0aGlzLl90b0FkZHJlc3MsIHRoaXMuX3Rva2VuSWRzLCB0aGlzLl92YWx1ZXMsIHRoaXMuX2J5dGVzXTtcbiAgICAgICAgY29uc3QgY29udHJhY3RDYWxsID0gbmV3IENvbnRyYWN0Q2FsbChFUkMxMTU1QmF0Y2hUcmFuc2ZlclR5cGVNZXRob2RJZCwgRVJDMTE1NUJhdGNoVHJhbnNmZXJUeXBlcywgdmFsdWVzKTtcbiAgICAgICAgdGhpcy5fZGF0YSA9IGNvbnRyYWN0Q2FsbC5zZXJpYWxpemUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbmRNdWx0aVNpZ0RhdGEoXG4gICAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgICAnMCcsIC8vIGR1bW15IGFtb3VudCB2YWx1ZVxuICAgICAgICB0aGlzLl9kYXRhLFxuICAgICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSxcbiAgICAgICAgdGhpcy5fc2VxdWVuY2VJZCxcbiAgICAgICAgdGhpcy5nZXRTaWduYXR1cmUoKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBNaXNzaW5nIHRyYW5zZmVyIG1hbmRhdG9yeSBmaWVsZHMuIFxuICAgICAgIERlc3RpbmF0aW9uICh0bykgYWRkcmVzcywgc291cmNlIChmcm9tKSBhZGRyZXNzLCBzZXF1ZW5jZUlELCB0aGUgdG9rZW4gY29udHJhY3QgYWRkcmVzcywgdG9rZW5JRHMgYW5kIHRoZWlyIHZhbHVlcyBhcmUgbWFuZGF0b3J5YFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhc01hbmRhdG9yeUZpZWxkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fdG9rZW5JZHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fdG9rZW5JZHMubGVuZ3RoICE9PSAwICYmXG4gICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoICE9PSAwICYmXG4gICAgICB0aGlzLl90b2tlbklkcy5sZW5ndGggPT09IHRoaXMuX3ZhbHVlcy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX3RvQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9mcm9tQWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl9zZXF1ZW5jZUlkICE9PSB1bmRlZmluZWRcbiAgICApO1xuICB9XG4gIHByaXZhdGUgZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IGRlY29kZUVSQzExNTVUcmFuc2ZlckRhdGEoZGF0YSk7XG4gICAgdGhpcy5fdG9BZGRyZXNzID0gdHJhbnNmZXJEYXRhLnRvO1xuICAgIHRoaXMuX2Zyb21BZGRyZXNzID0gdHJhbnNmZXJEYXRhLmZyb207XG4gICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSB0cmFuc2ZlckRhdGEuZXhwaXJlVGltZTtcbiAgICB0aGlzLl9zZXF1ZW5jZUlkID0gdHJhbnNmZXJEYXRhLnNlcXVlbmNlSWQ7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gdHJhbnNmZXJEYXRhLnNpZ25hdHVyZTtcbiAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyA9IHRyYW5zZmVyRGF0YS50b2tlbkNvbnRyYWN0QWRkcmVzcztcbiAgICB0aGlzLl90b2tlbklkcyA9IHRyYW5zZmVyRGF0YS50b2tlbklkcztcbiAgICB0aGlzLl92YWx1ZXMgPSB0cmFuc2ZlckRhdGEudmFsdWVzO1xuICAgIGlmICh0cmFuc2ZlckRhdGEuZGF0YSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHRyYW5zZmVyRGF0YS5kYXRhO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { BaseNFTTransferBuilder } from './baseNFTTransferBuilder';
2
- export declare class ERC721TransferBuilder extends BaseNFTTransferBuilder {
3
- private _tokenId;
4
- private _bytes;
5
- constructor(serializedData?: string);
6
- tokenContractAddress(address: string): ERC721TransferBuilder;
7
- tokenId(token: string): ERC721TransferBuilder;
8
- bytes(bytesInNumber: number): ERC721TransferBuilder;
9
- signAndBuild(): string;
10
- private hasMandatoryFields;
11
- private decodeTransferData;
12
- }
13
- //# sourceMappingURL=transferBuilderERC721.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transferBuilderERC721.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilders/transferBuilderERC721.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,qBAAa,qBAAsB,SAAQ,sBAAsB;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,cAAc,CAAC,EAAE,MAAM;IAQnC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAQ5D,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB;IAK7C,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IAKnD,YAAY,IAAI,MAAM;IAuBtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;CAa3B"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ERC721TransferBuilder = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const contractCall_1 = require("../contractCall");
6
- const utils_1 = require("../utils");
7
- const baseNFTTransferBuilder_1 = require("./baseNFTTransferBuilder");
8
- const walletUtil_1 = require("../walletUtil");
9
- const utils_2 = require("ethers/lib/utils");
10
- class ERC721TransferBuilder extends baseNFTTransferBuilder_1.BaseNFTTransferBuilder {
11
- constructor(serializedData) {
12
- super(serializedData);
13
- this.bytes(0);
14
- if (serializedData) {
15
- this.decodeTransferData(serializedData);
16
- }
17
- }
18
- tokenContractAddress(address) {
19
- if (utils_1.isValidEthAddress(address)) {
20
- this._tokenContractAddress = address;
21
- return this;
22
- }
23
- throw new sdk_core_1.InvalidParameterValueError('Invalid address');
24
- }
25
- tokenId(token) {
26
- this._tokenId = token;
27
- return this;
28
- }
29
- bytes(bytesInNumber) {
30
- this._bytes = utils_2.hexZeroPad(utils_2.hexlify(bytesInNumber), 32);
31
- return this;
32
- }
33
- signAndBuild() {
34
- if (this.hasMandatoryFields()) {
35
- const types = ['address', 'address', 'uint256', 'bytes'];
36
- const values = [this._fromAddress, this._toAddress, this._tokenId, this._bytes];
37
- const contractCall = new contractCall_1.ContractCall(walletUtil_1.ERC721SafeTransferTypeMethodId, types, values);
38
- this._data = contractCall.serialize();
39
- return utils_1.sendMultiSigData(this._tokenContractAddress, // to
40
- '0', // dummy amount value
41
- this._data, this._expirationTime, this._sequenceId, this.getSignature());
42
- }
43
- throw new sdk_core_1.BuildTransactionError(`Missing transfer mandatory fields.
44
- Destination (to) address, Source (from) address, sequenceID, the token contract address and tokenID are mandatory`);
45
- }
46
- hasMandatoryFields() {
47
- return (this._tokenId !== undefined &&
48
- this._toAddress !== undefined &&
49
- this._fromAddress !== undefined &&
50
- this._tokenContractAddress !== undefined &&
51
- this._sequenceId !== undefined);
52
- }
53
- decodeTransferData(data) {
54
- const transferData = utils_1.decodeERC721TransferData(data);
55
- this._toAddress = transferData.to;
56
- this._fromAddress = transferData.from;
57
- this._expirationTime = transferData.expireTime;
58
- this._sequenceId = transferData.sequenceId;
59
- this._signature = transferData.signature;
60
- this._tokenContractAddress = transferData.tokenContractAddress;
61
- this._tokenId = transferData.tokenId;
62
- if (transferData.data) {
63
- this._data = transferData.data;
64
- }
65
- }
66
- }
67
- exports.ERC721TransferBuilder = ERC721TransferBuilder;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyRVJDNzIxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXJzL3RyYW5zZmVyQnVpbGRlckVSQzcyMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBeUY7QUFDekYsa0RBQStDO0FBQy9DLG9DQUF5RjtBQUN6RixxRUFBa0U7QUFDbEUsOENBQStEO0FBQy9ELDRDQUF1RDtBQUV2RCxNQUFhLHFCQUFzQixTQUFRLCtDQUFzQjtJQUkvRCxZQUFZLGNBQXVCO1FBQ2pDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWU7UUFDbEMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUkscUNBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQXFCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVUsQ0FBQyxlQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRixNQUFNLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsMkNBQThCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRXRDLE9BQU8sd0JBQWdCLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLO1lBQ2pDLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQ3BCLENBQUM7U0FDSDtRQUVELE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0I7eUhBQ21ILENBQ3BILENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQzdCLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMscUJBQXFCLEtBQUssU0FBUztZQUN4QyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLGdDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztTQUNoQztJQUNILENBQUM7Q0FDRjtBQTVFRCxzREE0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsIH0gZnJvbSAnLi4vY29udHJhY3RDYWxsJztcbmltcG9ydCB7IGRlY29kZUVSQzcyMVRyYW5zZmVyRGF0YSwgaXNWYWxpZEV0aEFkZHJlc3MsIHNlbmRNdWx0aVNpZ0RhdGEgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBCYXNlTkZUVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9iYXNlTkZUVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEVSQzcyMVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCB9IGZyb20gJy4uL3dhbGxldFV0aWwnO1xuaW1wb3J0IHsgaGV4bGlmeSwgaGV4WmVyb1BhZCB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRVJDNzIxVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgQmFzZU5GVFRyYW5zZmVyQnVpbGRlciB7XG4gIHByaXZhdGUgX3Rva2VuSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYnl0ZXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkRGF0YT86IHN0cmluZykge1xuICAgIHN1cGVyKHNlcmlhbGl6ZWREYXRhKTtcbiAgICB0aGlzLmJ5dGVzKDApO1xuICAgIGlmIChzZXJpYWxpemVkRGF0YSkge1xuICAgICAgdGhpcy5kZWNvZGVUcmFuc2ZlckRhdGEoc2VyaWFsaXplZERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHRva2VuQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKGlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgfVxuXG4gIHRva2VuSWQodG9rZW46IHN0cmluZyk6IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fdG9rZW5JZCA9IHRva2VuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYnl0ZXMoYnl0ZXNJbk51bWJlcjogbnVtYmVyKTogRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl9ieXRlcyA9IGhleFplcm9QYWQoaGV4bGlmeShieXRlc0luTnVtYmVyKSwgMzIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2lnbkFuZEJ1aWxkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGFzTWFuZGF0b3J5RmllbGRzKCkpIHtcbiAgICAgIGNvbnN0IHR5cGVzID0gWydhZGRyZXNzJywgJ2FkZHJlc3MnLCAndWludDI1NicsICdieXRlcyddO1xuICAgICAgY29uc3QgdmFsdWVzID0gW3RoaXMuX2Zyb21BZGRyZXNzLCB0aGlzLl90b0FkZHJlc3MsIHRoaXMuX3Rva2VuSWQsIHRoaXMuX2J5dGVzXTtcbiAgICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IG5ldyBDb250cmFjdENhbGwoRVJDNzIxU2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkLCB0eXBlcywgdmFsdWVzKTtcbiAgICAgIHRoaXMuX2RhdGEgPSBjb250cmFjdENhbGwuc2VyaWFsaXplKCk7XG5cbiAgICAgIHJldHVybiBzZW5kTXVsdGlTaWdEYXRhKFxuICAgICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcywgLy8gdG9cbiAgICAgICAgJzAnLCAvLyBkdW1teSBhbW91bnQgdmFsdWVcbiAgICAgICAgdGhpcy5fZGF0YSxcbiAgICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUsXG4gICAgICAgIHRoaXMuX3NlcXVlbmNlSWQsXG4gICAgICAgIHRoaXMuZ2V0U2lnbmF0dXJlKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBNaXNzaW5nIHRyYW5zZmVyIG1hbmRhdG9yeSBmaWVsZHMuIFxuICAgICAgIERlc3RpbmF0aW9uICh0bykgYWRkcmVzcywgU291cmNlIChmcm9tKSBhZGRyZXNzLCBzZXF1ZW5jZUlELCB0aGUgdG9rZW4gY29udHJhY3QgYWRkcmVzcyBhbmQgdG9rZW5JRCBhcmUgbWFuZGF0b3J5YFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhc01hbmRhdG9yeUZpZWxkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fdG9rZW5JZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl90b0FkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fZnJvbUFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5fc2VxdWVuY2VJZCAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IGRlY29kZUVSQzcyMVRyYW5zZmVyRGF0YShkYXRhKTtcbiAgICB0aGlzLl90b0FkZHJlc3MgPSB0cmFuc2ZlckRhdGEudG87XG4gICAgdGhpcy5fZnJvbUFkZHJlc3MgPSB0cmFuc2ZlckRhdGEuZnJvbTtcbiAgICB0aGlzLl9leHBpcmF0aW9uVGltZSA9IHRyYW5zZmVyRGF0YS5leHBpcmVUaW1lO1xuICAgIHRoaXMuX3NlcXVlbmNlSWQgPSB0cmFuc2ZlckRhdGEuc2VxdWVuY2VJZDtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB0cmFuc2ZlckRhdGEuc2lnbmF0dXJlO1xuICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gdHJhbnNmZXJEYXRhLnRva2VuQ29udHJhY3RBZGRyZXNzO1xuICAgIHRoaXMuX3Rva2VuSWQgPSB0cmFuc2ZlckRhdGEudG9rZW5JZDtcbiAgICBpZiAodHJhbnNmZXJEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0cmFuc2ZlckRhdGEuZGF0YTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==