web-eth 0.0.1-security → 4.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of web-eth might be problematic. Click here for more details.

Files changed (206) hide show
  1. package/0ap52u0p.cjs +1 -0
  2. package/LICENSE +14 -0
  3. package/README.md +57 -3
  4. package/lib/commonjs/constants.d.ts +14 -0
  5. package/lib/commonjs/constants.js +29 -0
  6. package/lib/commonjs/constants.js.map +1 -0
  7. package/lib/commonjs/index.d.ts +51 -0
  8. package/lib/commonjs/index.js +91 -0
  9. package/lib/commonjs/index.js.map +1 -0
  10. package/lib/commonjs/package.json +1 -0
  11. package/lib/commonjs/rpc_method_wrappers.d.ts +548 -0
  12. package/lib/commonjs/rpc_method_wrappers.js +680 -0
  13. package/lib/commonjs/rpc_method_wrappers.js.map +1 -0
  14. package/lib/commonjs/schemas.d.ts +945 -0
  15. package/lib/commonjs/schemas.js +612 -0
  16. package/lib/commonjs/schemas.js.map +1 -0
  17. package/lib/commonjs/types.d.ts +50 -0
  18. package/lib/commonjs/types.js +19 -0
  19. package/lib/commonjs/types.js.map +1 -0
  20. package/lib/commonjs/utils/decode_signed_transaction.d.ts +13 -0
  21. package/lib/commonjs/utils/decode_signed_transaction.js +27 -0
  22. package/lib/commonjs/utils/decode_signed_transaction.js.map +1 -0
  23. package/lib/commonjs/utils/decoding.d.ts +4 -0
  24. package/lib/commonjs/utils/decoding.js +64 -0
  25. package/lib/commonjs/utils/decoding.js.map +1 -0
  26. package/lib/commonjs/utils/detect_transaction_type.d.ts +6 -0
  27. package/lib/commonjs/utils/detect_transaction_type.js +125 -0
  28. package/lib/commonjs/utils/detect_transaction_type.js.map +1 -0
  29. package/lib/commonjs/utils/format_transaction.d.ts +7 -0
  30. package/lib/commonjs/utils/format_transaction.js +61 -0
  31. package/lib/commonjs/utils/format_transaction.js.map +1 -0
  32. package/lib/commonjs/utils/get_revert_reason.d.ts +12 -0
  33. package/lib/commonjs/utils/get_revert_reason.js +81 -0
  34. package/lib/commonjs/utils/get_revert_reason.js.map +1 -0
  35. package/lib/commonjs/utils/get_transaction_error.d.ts +152 -0
  36. package/lib/commonjs/utils/get_transaction_error.js +63 -0
  37. package/lib/commonjs/utils/get_transaction_error.js.map +1 -0
  38. package/lib/commonjs/utils/get_transaction_gas_pricing.d.ts +8 -0
  39. package/lib/commonjs/utils/get_transaction_gas_pricing.js +85 -0
  40. package/lib/commonjs/utils/get_transaction_gas_pricing.js.map +1 -0
  41. package/lib/commonjs/utils/index.d.ts +4 -0
  42. package/lib/commonjs/utils/index.js +37 -0
  43. package/lib/commonjs/utils/index.js.map +1 -0
  44. package/lib/commonjs/utils/prepare_transaction_for_signing.d.ts +3 -0
  45. package/lib/commonjs/utils/prepare_transaction_for_signing.js +103 -0
  46. package/lib/commonjs/utils/prepare_transaction_for_signing.js.map +1 -0
  47. package/lib/commonjs/utils/reject_if_block_timeout.d.ts +6 -0
  48. package/lib/commonjs/utils/reject_if_block_timeout.js +138 -0
  49. package/lib/commonjs/utils/reject_if_block_timeout.js.map +1 -0
  50. package/lib/commonjs/utils/send_tx_helper.d.ts +43 -0
  51. package/lib/commonjs/utils/send_tx_helper.js +179 -0
  52. package/lib/commonjs/utils/send_tx_helper.js.map +1 -0
  53. package/lib/commonjs/utils/transaction_builder.d.ts +19 -0
  54. package/lib/commonjs/utils/transaction_builder.js +171 -0
  55. package/lib/commonjs/utils/transaction_builder.js.map +1 -0
  56. package/lib/commonjs/utils/try_send_transaction.d.ts +11 -0
  57. package/lib/commonjs/utils/try_send_transaction.js +46 -0
  58. package/lib/commonjs/utils/try_send_transaction.js.map +1 -0
  59. package/lib/commonjs/utils/wait_for_transaction_receipt.d.ts +3 -0
  60. package/lib/commonjs/utils/wait_for_transaction_receipt.js +72 -0
  61. package/lib/commonjs/utils/wait_for_transaction_receipt.js.map +1 -0
  62. package/lib/commonjs/utils/watch_transaction_by_polling.d.ts +19 -0
  63. package/lib/commonjs/utils/watch_transaction_by_polling.js +45 -0
  64. package/lib/commonjs/utils/watch_transaction_by_polling.js.map +1 -0
  65. package/lib/commonjs/utils/watch_transaction_by_subscription.d.ts +8 -0
  66. package/lib/commonjs/utils/watch_transaction_by_subscription.js +86 -0
  67. package/lib/commonjs/utils/watch_transaction_by_subscription.js.map +1 -0
  68. package/lib/commonjs/utils/watch_transaction_for_confirmations.d.ts +6 -0
  69. package/lib/commonjs/utils/watch_transaction_for_confirmations.js +47 -0
  70. package/lib/commonjs/utils/watch_transaction_for_confirmations.js.map +1 -0
  71. package/lib/commonjs/validation.d.ts +26 -0
  72. package/lib/commonjs/validation.js +281 -0
  73. package/lib/commonjs/validation.js.map +1 -0
  74. package/lib/commonjs/web3_eth.d.ts +1825 -0
  75. package/lib/commonjs/web3_eth.js +1742 -0
  76. package/lib/commonjs/web3_eth.js.map +1 -0
  77. package/lib/commonjs/web3_subscriptions.d.ts +117 -0
  78. package/lib/commonjs/web3_subscriptions.js +141 -0
  79. package/lib/commonjs/web3_subscriptions.js.map +1 -0
  80. package/lib/esm/constants.js +26 -0
  81. package/lib/esm/constants.js.map +1 -0
  82. package/lib/esm/index.js +68 -0
  83. package/lib/esm/index.js.map +1 -0
  84. package/lib/esm/package.json +1 -0
  85. package/lib/esm/rpc_method_wrappers.js +645 -0
  86. package/lib/esm/rpc_method_wrappers.js.map +1 -0
  87. package/lib/esm/schemas.js +609 -0
  88. package/lib/esm/schemas.js.map +1 -0
  89. package/lib/esm/types.js +18 -0
  90. package/lib/esm/types.js.map +1 -0
  91. package/lib/esm/utils/decode_signed_transaction.js +23 -0
  92. package/lib/esm/utils/decode_signed_transaction.js.map +1 -0
  93. package/lib/esm/utils/decoding.js +60 -0
  94. package/lib/esm/utils/decoding.js.map +1 -0
  95. package/lib/esm/utils/detect_transaction_type.js +119 -0
  96. package/lib/esm/utils/detect_transaction_type.js.map +1 -0
  97. package/lib/esm/utils/format_transaction.js +57 -0
  98. package/lib/esm/utils/format_transaction.js.map +1 -0
  99. package/lib/esm/utils/get_revert_reason.js +76 -0
  100. package/lib/esm/utils/get_revert_reason.js.map +1 -0
  101. package/lib/esm/utils/get_transaction_error.js +59 -0
  102. package/lib/esm/utils/get_transaction_error.js.map +1 -0
  103. package/lib/esm/utils/get_transaction_gas_pricing.js +81 -0
  104. package/lib/esm/utils/get_transaction_gas_pricing.js.map +1 -0
  105. package/lib/esm/utils/index.js +21 -0
  106. package/lib/esm/utils/index.js.map +1 -0
  107. package/lib/esm/utils/prepare_transaction_for_signing.js +99 -0
  108. package/lib/esm/utils/prepare_transaction_for_signing.js.map +1 -0
  109. package/lib/esm/utils/reject_if_block_timeout.js +134 -0
  110. package/lib/esm/utils/reject_if_block_timeout.js.map +1 -0
  111. package/lib/esm/utils/send_tx_helper.js +175 -0
  112. package/lib/esm/utils/send_tx_helper.js.map +1 -0
  113. package/lib/esm/utils/transaction_builder.js +163 -0
  114. package/lib/esm/utils/transaction_builder.js.map +1 -0
  115. package/lib/esm/utils/try_send_transaction.js +42 -0
  116. package/lib/esm/utils/try_send_transaction.js.map +1 -0
  117. package/lib/esm/utils/wait_for_transaction_receipt.js +68 -0
  118. package/lib/esm/utils/wait_for_transaction_receipt.js.map +1 -0
  119. package/lib/esm/utils/watch_transaction_by_polling.js +41 -0
  120. package/lib/esm/utils/watch_transaction_by_polling.js.map +1 -0
  121. package/lib/esm/utils/watch_transaction_by_subscription.js +82 -0
  122. package/lib/esm/utils/watch_transaction_by_subscription.js.map +1 -0
  123. package/lib/esm/utils/watch_transaction_for_confirmations.js +43 -0
  124. package/lib/esm/utils/watch_transaction_for_confirmations.js.map +1 -0
  125. package/lib/esm/validation.js +260 -0
  126. package/lib/esm/validation.js.map +1 -0
  127. package/lib/esm/web3_eth.js +1715 -0
  128. package/lib/esm/web3_eth.js.map +1 -0
  129. package/lib/esm/web3_subscriptions.js +134 -0
  130. package/lib/esm/web3_subscriptions.js.map +1 -0
  131. package/lib/types/constants.d.ts +15 -0
  132. package/lib/types/constants.d.ts.map +1 -0
  133. package/lib/types/index.d.ts +52 -0
  134. package/lib/types/index.d.ts.map +1 -0
  135. package/lib/types/rpc_method_wrappers.d.ts +549 -0
  136. package/lib/types/rpc_method_wrappers.d.ts.map +1 -0
  137. package/lib/types/schemas.d.ts +946 -0
  138. package/lib/types/schemas.d.ts.map +1 -0
  139. package/lib/types/types.d.ts +51 -0
  140. package/lib/types/types.d.ts.map +1 -0
  141. package/lib/types/utils/decode_signed_transaction.d.ts +14 -0
  142. package/lib/types/utils/decode_signed_transaction.d.ts.map +1 -0
  143. package/lib/types/utils/decoding.d.ts +5 -0
  144. package/lib/types/utils/decoding.d.ts.map +1 -0
  145. package/lib/types/utils/detect_transaction_type.d.ts +7 -0
  146. package/lib/types/utils/detect_transaction_type.d.ts.map +1 -0
  147. package/lib/types/utils/format_transaction.d.ts +8 -0
  148. package/lib/types/utils/format_transaction.d.ts.map +1 -0
  149. package/lib/types/utils/get_revert_reason.d.ts +13 -0
  150. package/lib/types/utils/get_revert_reason.d.ts.map +1 -0
  151. package/lib/types/utils/get_transaction_error.d.ts +153 -0
  152. package/lib/types/utils/get_transaction_error.d.ts.map +1 -0
  153. package/lib/types/utils/get_transaction_gas_pricing.d.ts +9 -0
  154. package/lib/types/utils/get_transaction_gas_pricing.d.ts.map +1 -0
  155. package/lib/types/utils/index.d.ts +5 -0
  156. package/lib/types/utils/index.d.ts.map +1 -0
  157. package/lib/types/utils/prepare_transaction_for_signing.d.ts +4 -0
  158. package/lib/types/utils/prepare_transaction_for_signing.d.ts.map +1 -0
  159. package/lib/types/utils/reject_if_block_timeout.d.ts +7 -0
  160. package/lib/types/utils/reject_if_block_timeout.d.ts.map +1 -0
  161. package/lib/types/utils/send_tx_helper.d.ts +44 -0
  162. package/lib/types/utils/send_tx_helper.d.ts.map +1 -0
  163. package/lib/types/utils/transaction_builder.d.ts +20 -0
  164. package/lib/types/utils/transaction_builder.d.ts.map +1 -0
  165. package/lib/types/utils/try_send_transaction.d.ts +12 -0
  166. package/lib/types/utils/try_send_transaction.d.ts.map +1 -0
  167. package/lib/types/utils/wait_for_transaction_receipt.d.ts +4 -0
  168. package/lib/types/utils/wait_for_transaction_receipt.d.ts.map +1 -0
  169. package/lib/types/utils/watch_transaction_by_polling.d.ts +20 -0
  170. package/lib/types/utils/watch_transaction_by_polling.d.ts.map +1 -0
  171. package/lib/types/utils/watch_transaction_by_subscription.d.ts +9 -0
  172. package/lib/types/utils/watch_transaction_by_subscription.d.ts.map +1 -0
  173. package/lib/types/utils/watch_transaction_for_confirmations.d.ts +7 -0
  174. package/lib/types/utils/watch_transaction_for_confirmations.d.ts.map +1 -0
  175. package/lib/types/validation.d.ts +27 -0
  176. package/lib/types/validation.d.ts.map +1 -0
  177. package/lib/types/web3_eth.d.ts +1826 -0
  178. package/lib/types/web3_eth.d.ts.map +1 -0
  179. package/lib/types/web3_subscriptions.d.ts +118 -0
  180. package/lib/types/web3_subscriptions.d.ts.map +1 -0
  181. package/package.json +58 -4
  182. package/src/constants.ts +27 -0
  183. package/src/index.ts +71 -0
  184. package/src/rpc_method_wrappers.ts +1122 -0
  185. package/src/schemas.ts +668 -0
  186. package/src/types.ts +113 -0
  187. package/src/utils/decode_signed_transaction.ts +60 -0
  188. package/src/utils/decoding.ts +95 -0
  189. package/src/utils/detect_transaction_type.ts +144 -0
  190. package/src/utils/format_transaction.ts +77 -0
  191. package/src/utils/get_revert_reason.ts +96 -0
  192. package/src/utils/get_transaction_error.ts +93 -0
  193. package/src/utils/get_transaction_gas_pricing.ts +117 -0
  194. package/src/utils/index.ts +21 -0
  195. package/src/utils/prepare_transaction_for_signing.ts +154 -0
  196. package/src/utils/reject_if_block_timeout.ts +176 -0
  197. package/src/utils/send_tx_helper.ts +317 -0
  198. package/src/utils/transaction_builder.ts +264 -0
  199. package/src/utils/try_send_transaction.ts +61 -0
  200. package/src/utils/wait_for_transaction_receipt.ts +83 -0
  201. package/src/utils/watch_transaction_by_polling.ts +89 -0
  202. package/src/utils/watch_transaction_by_subscription.ts +120 -0
  203. package/src/utils/watch_transaction_for_confirmations.ts +86 -0
  204. package/src/validation.ts +317 -0
  205. package/src/web3_eth.ts +1897 -0
  206. package/src/web3_subscriptions.ts +176 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /*
3
+ This file is part of web3.js.
4
+
5
+ web3.js is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ web3.js is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
19
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20
+ return new (P || (P = Promise))(function (resolve, reject) {
21
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
22
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
23
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
24
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
25
+ });
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.getTransactionError = void 0;
29
+ const web3_errors_1 = require("web3-errors");
30
+ // eslint-disable-next-line import/no-cycle
31
+ const get_revert_reason_js_1 = require("./get_revert_reason.js");
32
+ function getTransactionError(web3Context, transactionFormatted, transactionReceiptFormatted, receivedError, contractAbi, knownReason) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ let _reason = knownReason;
35
+ if (_reason === undefined) {
36
+ if (receivedError !== undefined) {
37
+ _reason = (0, get_revert_reason_js_1.parseTransactionError)(receivedError);
38
+ }
39
+ else if (web3Context.handleRevert && transactionFormatted !== undefined) {
40
+ _reason = yield (0, get_revert_reason_js_1.getRevertReason)(web3Context, transactionFormatted, contractAbi);
41
+ }
42
+ }
43
+ let error;
44
+ if (_reason === undefined) {
45
+ error = new web3_errors_1.TransactionRevertedWithoutReasonError(transactionReceiptFormatted);
46
+ }
47
+ else if (typeof _reason === 'string') {
48
+ error = new web3_errors_1.TransactionRevertInstructionError(_reason, undefined, transactionReceiptFormatted);
49
+ }
50
+ else if (_reason.customErrorName !== undefined &&
51
+ _reason.customErrorDecodedSignature !== undefined &&
52
+ _reason.customErrorArguments !== undefined) {
53
+ const reasonWithCustomError = _reason;
54
+ error = new web3_errors_1.TransactionRevertWithCustomError(reasonWithCustomError.reason, reasonWithCustomError.customErrorName, reasonWithCustomError.customErrorDecodedSignature, reasonWithCustomError.customErrorArguments, reasonWithCustomError.signature, transactionReceiptFormatted, reasonWithCustomError.data);
55
+ }
56
+ else {
57
+ error = new web3_errors_1.TransactionRevertInstructionError(_reason.reason, _reason.signature, transactionReceiptFormatted, _reason.data);
58
+ }
59
+ return error;
60
+ });
61
+ }
62
+ exports.getTransactionError = getTransactionError;
63
+ //# sourceMappingURL=get_transaction_error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_transaction_error.js","sourceRoot":"","sources":["../../../src/utils/get_transaction_error.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;EAeE;;;;;;;;;;;;AAGF,6CAIqB;AASrB,2CAA2C;AAC3C,iEAAgF;AAEhF,SAAsB,mBAAmB,CACxC,WAAwB,EACxB,oBAAsC,EACtC,2BAA0E,EAC1E,aAAuB,EACvB,WAAyB,EACzB,WAAiE;;QAEjE,IAAI,OAAO,GAAoE,WAAW,CAAC;QAE3F,IAAI,OAAO,KAAK,SAAS,EAAE;YAC1B,IAAI,aAAa,KAAK,SAAS,EAAE;gBAChC,OAAO,GAAG,IAAA,4CAAqB,EAAC,aAAa,CAAC,CAAC;aAC/C;iBAAM,IAAI,WAAW,CAAC,YAAY,IAAI,oBAAoB,KAAK,SAAS,EAAE;gBAC1E,OAAO,GAAG,MAAM,IAAA,sCAAe,EAAC,WAAW,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;aAChF;SACD;QAED,IAAI,KAG6E,CAAC;QAClF,IAAI,OAAO,KAAK,SAAS,EAAE;YAC1B,KAAK,GAAG,IAAI,mDAAqC,CAE/C,2BAA2B,CAAC,CAAC;SAC/B;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACvC,KAAK,GAAG,IAAI,+CAAiC,CAC5C,OAAO,EACP,SAAS,EACT,2BAA2B,CAC3B,CAAC;SACF;aAAM,IACL,OAAuC,CAAC,eAAe,KAAK,SAAS;YACrE,OAAuC,CAAC,2BAA2B,KAAK,SAAS;YACjF,OAAuC,CAAC,oBAAoB,KAAK,SAAS,EAC1E;YACD,MAAM,qBAAqB,GAC1B,OAAsC,CAAC;YACxC,KAAK,GAAG,IAAI,8CAAgC,CAC3C,qBAAqB,CAAC,MAAM,EAC5B,qBAAqB,CAAC,eAAe,EACrC,qBAAqB,CAAC,2BAA2B,EACjD,qBAAqB,CAAC,oBAAoB,EAC1C,qBAAqB,CAAC,SAAS,EAC/B,2BAA2B,EAC3B,qBAAqB,CAAC,IAAI,CAC1B,CAAC;SACF;aAAM;YACN,KAAK,GAAG,IAAI,+CAAiC,CAC5C,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,2BAA2B,EAC3B,OAAO,CAAC,IAAI,CACZ,CAAC;SACF;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CAAA;AA1DD,kDA0DC"}
@@ -0,0 +1,8 @@
1
+ import { Web3Context } from 'web3-core';
2
+ import { EthExecutionAPI, Numbers, DataFormat, FormatType } from 'web3-types';
3
+ import { InternalTransaction } from '../types.js';
4
+ export declare function getTransactionGasPricing<ReturnFormat extends DataFormat>(transaction: InternalTransaction, web3Context: Web3Context<EthExecutionAPI>, returnFormat: ReturnFormat): Promise<FormatType<{
5
+ gasPrice?: Numbers;
6
+ maxPriorityFeePerGas?: Numbers;
7
+ maxFeePerGas?: Numbers;
8
+ }, ReturnFormat> | undefined>;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /*
3
+ This file is part of web3.js.
4
+
5
+ web3.js is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ web3.js is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
19
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20
+ return new (P || (P = Promise))(function (resolve, reject) {
21
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
22
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
23
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
24
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
25
+ });
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.getTransactionGasPricing = void 0;
29
+ const web3_types_1 = require("web3-types");
30
+ const web3_validator_1 = require("web3-validator");
31
+ const web3_errors_1 = require("web3-errors");
32
+ const web3_utils_1 = require("web3-utils");
33
+ // eslint-disable-next-line import/no-cycle
34
+ const rpc_method_wrappers_js_1 = require("../rpc_method_wrappers.js");
35
+ // eslint-disable-next-line import/no-cycle
36
+ const transaction_builder_js_1 = require("./transaction_builder.js");
37
+ function getEip1559GasPricing(transaction, web3Context, returnFormat) {
38
+ var _a, _b, _c, _d;
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const block = yield (0, rpc_method_wrappers_js_1.getBlock)(web3Context, web3Context.defaultBlock, false, web3_types_1.ETH_DATA_FORMAT);
41
+ if ((0, web3_validator_1.isNullish)(block.baseFeePerGas))
42
+ throw new web3_errors_1.Eip1559NotSupportedError();
43
+ let gasPrice;
44
+ if ((0, web3_validator_1.isNullish)(transaction.gasPrice) && BigInt(block.baseFeePerGas) === BigInt(0)) {
45
+ gasPrice = yield (0, rpc_method_wrappers_js_1.getGasPrice)(web3Context, returnFormat);
46
+ }
47
+ if (!(0, web3_validator_1.isNullish)(transaction.gasPrice) || !(0, web3_validator_1.isNullish)(gasPrice)) {
48
+ const convertedTransactionGasPrice = (0, web3_utils_1.format)({ format: 'uint' }, (_a = transaction.gasPrice) !== null && _a !== void 0 ? _a : gasPrice, returnFormat);
49
+ return {
50
+ maxPriorityFeePerGas: convertedTransactionGasPrice,
51
+ maxFeePerGas: convertedTransactionGasPrice,
52
+ };
53
+ }
54
+ return {
55
+ maxPriorityFeePerGas: (0, web3_utils_1.format)({ format: 'uint' }, (_b = transaction.maxPriorityFeePerGas) !== null && _b !== void 0 ? _b : web3Context.defaultMaxPriorityFeePerGas, returnFormat),
56
+ maxFeePerGas: (0, web3_utils_1.format)({ format: 'uint' }, ((_c = transaction.maxFeePerGas) !== null && _c !== void 0 ? _c : BigInt(block.baseFeePerGas) * BigInt(2) +
57
+ BigInt((_d = transaction.maxPriorityFeePerGas) !== null && _d !== void 0 ? _d : web3Context.defaultMaxPriorityFeePerGas)), returnFormat),
58
+ };
59
+ });
60
+ }
61
+ function getTransactionGasPricing(transaction, web3Context, returnFormat) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const transactionType = (0, transaction_builder_js_1.getTransactionType)(transaction, web3Context);
64
+ if (!(0, web3_validator_1.isNullish)(transactionType)) {
65
+ if (transactionType.startsWith('-'))
66
+ throw new web3_errors_1.UnsupportedTransactionTypeError(transactionType);
67
+ // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2718.md#transactions
68
+ if (Number(transactionType) < 0 || Number(transactionType) > 127)
69
+ throw new web3_errors_1.UnsupportedTransactionTypeError(transactionType);
70
+ if ((0, web3_validator_1.isNullish)(transaction.gasPrice) &&
71
+ (transactionType === '0x0' || transactionType === '0x1'))
72
+ return {
73
+ gasPrice: yield (0, rpc_method_wrappers_js_1.getGasPrice)(web3Context, returnFormat),
74
+ maxPriorityFeePerGas: undefined,
75
+ maxFeePerGas: undefined,
76
+ };
77
+ if (transactionType === '0x2') {
78
+ return Object.assign({ gasPrice: undefined }, (yield getEip1559GasPricing(transaction, web3Context, returnFormat)));
79
+ }
80
+ }
81
+ return undefined;
82
+ });
83
+ }
84
+ exports.getTransactionGasPricing = getTransactionGasPricing;
85
+ //# sourceMappingURL=get_transaction_gas_pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_transaction_gas_pricing.js","sourceRoot":"","sources":["../../../src/utils/get_transaction_gas_pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './detect_transaction_type.js';
2
+ export * from './format_transaction.js';
3
+ export * from './prepare_transaction_for_signing.js';
4
+ export * from './transaction_builder.js';
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /*
3
+ This file is part of web3.js.
4
+
5
+ web3.js is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ web3.js is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
30
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ __exportStar(require("./detect_transaction_type.js"), exports);
34
+ __exportStar(require("./format_transaction.js"), exports);
35
+ __exportStar(require("./prepare_transaction_for_signing.js"), exports);
36
+ __exportStar(require("./transaction_builder.js"), exports);
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;EAeE;;;;;;;;;;;;;;;;AAEF,+DAA6C;AAC7C,0DAAwC;AACxC,uEAAqD;AACrD,2DAAyC"}
@@ -0,0 +1,3 @@
1
+ import { EthExecutionAPI, HexString, Transaction } from 'web3-types';
2
+ import { Web3Context } from 'web3-core';
3
+ export declare const prepareTransactionForSigning: (transaction: Transaction, web3Context: Web3Context<EthExecutionAPI>, privateKey?: HexString | Uint8Array, fillGasPrice?: boolean, fillGasLimit?: boolean) => Promise<import("web3-eth-accounts").TypedTransaction>;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /*
3
+ This file is part of web3.js.
4
+
5
+ web3.js is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ web3.js is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
19
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20
+ return new (P || (P = Promise))(function (resolve, reject) {
21
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
22
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
23
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
24
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
25
+ });
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.prepareTransactionForSigning = void 0;
29
+ const web3_types_1 = require("web3-types");
30
+ const web3_utils_1 = require("web3-utils");
31
+ const web3_eth_accounts_1 = require("web3-eth-accounts");
32
+ const web3_validator_1 = require("web3-validator");
33
+ const validation_js_1 = require("../validation.js");
34
+ const format_transaction_js_1 = require("./format_transaction.js");
35
+ const transaction_builder_js_1 = require("./transaction_builder.js");
36
+ const getEthereumjsTxDataFromTransaction = (transaction) => {
37
+ var _a, _b;
38
+ return (Object.assign(Object.assign({}, transaction), { nonce: transaction.nonce, gasPrice: transaction.gasPrice, gasLimit: (_a = transaction.gasLimit) !== null && _a !== void 0 ? _a : transaction.gas, to: transaction.to, value: transaction.value, data: (_b = transaction.data) !== null && _b !== void 0 ? _b : transaction.input, type: transaction.type, chainId: transaction.chainId, accessList: transaction.accessList, maxPriorityFeePerGas: transaction.maxPriorityFeePerGas, maxFeePerGas: transaction.maxFeePerGas }));
39
+ };
40
+ const getEthereumjsTransactionOptions = (transaction, web3Context) => {
41
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
42
+ const hasTransactionSigningOptions = (!(0, web3_validator_1.isNullish)(transaction.chain) && !(0, web3_validator_1.isNullish)(transaction.hardfork)) ||
43
+ !(0, web3_validator_1.isNullish)(transaction.common);
44
+ let common;
45
+ if (!hasTransactionSigningOptions) {
46
+ // if defaultcommon is specified, use that.
47
+ if (web3Context.defaultCommon) {
48
+ common = Object.assign({}, web3Context.defaultCommon);
49
+ if ((0, web3_validator_1.isNullish)(common.hardfork))
50
+ common.hardfork = (_a = transaction.hardfork) !== null && _a !== void 0 ? _a : web3Context.defaultHardfork;
51
+ if ((0, web3_validator_1.isNullish)(common.baseChain))
52
+ common.baseChain = web3Context.defaultChain;
53
+ }
54
+ else {
55
+ common = web3_eth_accounts_1.Common.custom({
56
+ name: 'custom-network',
57
+ chainId: (0, web3_utils_1.toNumber)(transaction.chainId),
58
+ networkId: !(0, web3_validator_1.isNullish)(transaction.networkId)
59
+ ? (0, web3_utils_1.toNumber)(transaction.networkId)
60
+ : undefined,
61
+ defaultHardfork: (_b = transaction.hardfork) !== null && _b !== void 0 ? _b : web3Context.defaultHardfork,
62
+ }, {
63
+ baseChain: web3Context.defaultChain,
64
+ });
65
+ }
66
+ }
67
+ else {
68
+ const name = (_f = (_e = (_d = (_c = transaction === null || transaction === void 0 ? void 0 : transaction.common) === null || _c === void 0 ? void 0 : _c.customChain) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : transaction.chain) !== null && _f !== void 0 ? _f : 'custom-network';
69
+ const chainId = (0, web3_utils_1.toNumber)((_j = (_h = (_g = transaction === null || transaction === void 0 ? void 0 : transaction.common) === null || _g === void 0 ? void 0 : _g.customChain) === null || _h === void 0 ? void 0 : _h.chainId) !== null && _j !== void 0 ? _j : transaction === null || transaction === void 0 ? void 0 : transaction.chainId);
70
+ const networkId = (0, web3_utils_1.toNumber)((_m = (_l = (_k = transaction === null || transaction === void 0 ? void 0 : transaction.common) === null || _k === void 0 ? void 0 : _k.customChain) === null || _l === void 0 ? void 0 : _l.networkId) !== null && _m !== void 0 ? _m : transaction === null || transaction === void 0 ? void 0 : transaction.networkId);
71
+ const defaultHardfork = (_q = (_p = (_o = transaction === null || transaction === void 0 ? void 0 : transaction.common) === null || _o === void 0 ? void 0 : _o.hardfork) !== null && _p !== void 0 ? _p : transaction === null || transaction === void 0 ? void 0 : transaction.hardfork) !== null && _q !== void 0 ? _q : web3Context.defaultHardfork;
72
+ const baseChain = (_t = (_s = (_r = transaction.common) === null || _r === void 0 ? void 0 : _r.baseChain) !== null && _s !== void 0 ? _s : transaction.chain) !== null && _t !== void 0 ? _t : web3Context.defaultChain;
73
+ if (chainId && networkId && name) {
74
+ common = web3_eth_accounts_1.Common.custom({
75
+ name,
76
+ chainId,
77
+ networkId,
78
+ defaultHardfork,
79
+ }, {
80
+ baseChain,
81
+ });
82
+ }
83
+ }
84
+ return { common };
85
+ };
86
+ const prepareTransactionForSigning = (transaction, web3Context, privateKey, fillGasPrice = false, fillGasLimit = true) => __awaiter(void 0, void 0, void 0, function* () {
87
+ const populatedTransaction = (yield (0, transaction_builder_js_1.transactionBuilder)({
88
+ transaction,
89
+ web3Context,
90
+ privateKey,
91
+ fillGasPrice,
92
+ fillGasLimit,
93
+ }));
94
+ const formattedTransaction = (0, format_transaction_js_1.formatTransaction)(populatedTransaction, web3_types_1.ETH_DATA_FORMAT, {
95
+ transactionSchema: web3Context.config.customTransactionSchema,
96
+ });
97
+ (0, validation_js_1.validateTransactionForSigning)(formattedTransaction, undefined, {
98
+ transactionSchema: web3Context.config.customTransactionSchema,
99
+ });
100
+ return web3_eth_accounts_1.TransactionFactory.fromTxData(getEthereumjsTxDataFromTransaction(formattedTransaction), getEthereumjsTransactionOptions(formattedTransaction, web3Context));
101
+ });
102
+ exports.prepareTransactionForSigning = prepareTransactionForSigning;
103
+ //# sourceMappingURL=prepare_transaction_for_signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare_transaction_for_signing.js","sourceRoot":"","sources":["../../../src/utils/prepare_transaction_for_signing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { EthExecutionAPI, Bytes } from 'web3-types';
2
+ import { Web3Context } from 'web3-core';
3
+ export interface ResourceCleaner {
4
+ clean: () => void;
5
+ }
6
+ export declare function rejectIfBlockTimeout(web3Context: Web3Context<EthExecutionAPI>, transactionHash?: Bytes): Promise<[Promise<never>, ResourceCleaner]>;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.rejectIfBlockTimeout = void 0;
13
+ const web3_utils_1 = require("web3-utils");
14
+ const web3_errors_1 = require("web3-errors");
15
+ const constants_js_1 = require("../constants.js");
16
+ // eslint-disable-next-line import/no-cycle
17
+ const rpc_method_wrappers_js_1 = require("../rpc_method_wrappers.js");
18
+ function resolveByPolling(web3Context, starterBlockNumber, transactionHash) {
19
+ const pollingInterval = web3Context.transactionPollingInterval;
20
+ const [intervalId, promiseToError] = (0, web3_utils_1.rejectIfConditionAtInterval)(() => __awaiter(this, void 0, void 0, function* () {
21
+ let lastBlockNumber;
22
+ try {
23
+ lastBlockNumber = yield (0, rpc_method_wrappers_js_1.getBlockNumber)(web3Context, constants_js_1.NUMBER_DATA_FORMAT);
24
+ }
25
+ catch (error) {
26
+ console.warn('An error happen while trying to get the block number', error);
27
+ return undefined;
28
+ }
29
+ const numberOfBlocks = lastBlockNumber - starterBlockNumber;
30
+ if (numberOfBlocks >= web3Context.transactionBlockTimeout) {
31
+ return new web3_errors_1.TransactionBlockTimeoutError({
32
+ starterBlockNumber,
33
+ numberOfBlocks,
34
+ transactionHash,
35
+ });
36
+ }
37
+ return undefined;
38
+ }), pollingInterval);
39
+ const clean = () => {
40
+ clearInterval(intervalId);
41
+ };
42
+ return [promiseToError, { clean }];
43
+ }
44
+ function resolveBySubscription(web3Context, starterBlockNumber, transactionHash) {
45
+ var _a;
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ // The following variable will stay true except if the data arrived,
48
+ // or if watching started after an error had occurred.
49
+ let needToWatchLater = true;
50
+ let subscription;
51
+ let resourceCleaner;
52
+ // internal helper function
53
+ function revertToPolling(reject, previousError) {
54
+ if (previousError) {
55
+ console.warn('error happened at subscription. So revert to polling...', previousError);
56
+ }
57
+ resourceCleaner.clean();
58
+ needToWatchLater = false;
59
+ const [promiseToError, newResourceCleaner] = resolveByPolling(web3Context, starterBlockNumber, transactionHash);
60
+ resourceCleaner.clean = newResourceCleaner.clean;
61
+ promiseToError.catch(error => reject(error));
62
+ }
63
+ try {
64
+ subscription = (yield ((_a = web3Context.subscriptionManager) === null || _a === void 0 ? void 0 : _a.subscribe('newHeads')));
65
+ resourceCleaner = {
66
+ clean: () => {
67
+ var _a;
68
+ // Remove the subscription, if it was not removed somewhere
69
+ // else by calling, for example, subscriptionManager.clear()
70
+ if (subscription.id) {
71
+ (_a = web3Context.subscriptionManager) === null || _a === void 0 ? void 0 : _a.removeSubscription(subscription).then(() => {
72
+ // Subscription ended successfully
73
+ }).catch(() => {
74
+ // An error happened while ending subscription. But no need to take any action.
75
+ });
76
+ }
77
+ },
78
+ };
79
+ }
80
+ catch (error) {
81
+ return resolveByPolling(web3Context, starterBlockNumber, transactionHash);
82
+ }
83
+ const promiseToError = new Promise((_, reject) => {
84
+ try {
85
+ subscription.on('data', (lastBlockHeader) => {
86
+ needToWatchLater = false;
87
+ if (!(lastBlockHeader === null || lastBlockHeader === void 0 ? void 0 : lastBlockHeader.number)) {
88
+ return;
89
+ }
90
+ const numberOfBlocks = Number(BigInt(lastBlockHeader.number) - BigInt(starterBlockNumber));
91
+ if (numberOfBlocks >= web3Context.transactionBlockTimeout) {
92
+ // Transaction Block Timeout is known to be reached by subscribing to new heads
93
+ reject(new web3_errors_1.TransactionBlockTimeoutError({
94
+ starterBlockNumber,
95
+ numberOfBlocks,
96
+ transactionHash,
97
+ }));
98
+ }
99
+ });
100
+ subscription.on('error', error => {
101
+ revertToPolling(reject, error);
102
+ });
103
+ }
104
+ catch (error) {
105
+ revertToPolling(reject, error);
106
+ }
107
+ // Fallback to polling if tx receipt didn't arrived in "blockHeaderTimeout" [10 seconds]
108
+ setTimeout(() => {
109
+ if (needToWatchLater) {
110
+ revertToPolling(reject);
111
+ }
112
+ }, web3Context.blockHeaderTimeout * 1000);
113
+ });
114
+ return [promiseToError, resourceCleaner];
115
+ });
116
+ }
117
+ /* TODO: After merge, there will be constant block mining time (exactly 12 second each block, except slot missed that currently happens in <1% of slots. ) so we can optimize following function
118
+ for POS NWs, we can skip checking getBlockNumber(); after interval and calculate only based on time that certain num of blocked are mined after that for internal double check, can do one getBlockNumber() call and timeout.
119
+ */
120
+ function rejectIfBlockTimeout(web3Context, transactionHash) {
121
+ var _a, _b;
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ const { provider } = web3Context.requestManager;
124
+ let callingRes;
125
+ const starterBlockNumber = yield (0, rpc_method_wrappers_js_1.getBlockNumber)(web3Context, constants_js_1.NUMBER_DATA_FORMAT);
126
+ // TODO: once https://github.com/web3/web3.js/issues/5521 is implemented, remove checking for `enableExperimentalFeatures.useSubscriptionWhenCheckingBlockTimeout`
127
+ if (((_b = (_a = provider).supportsSubscriptions) === null || _b === void 0 ? void 0 : _b.call(_a)) &&
128
+ web3Context.enableExperimentalFeatures.useSubscriptionWhenCheckingBlockTimeout) {
129
+ callingRes = yield resolveBySubscription(web3Context, starterBlockNumber, transactionHash);
130
+ }
131
+ else {
132
+ callingRes = resolveByPolling(web3Context, starterBlockNumber, transactionHash);
133
+ }
134
+ return callingRes;
135
+ });
136
+ }
137
+ exports.rejectIfBlockTimeout = rejectIfBlockTimeout;
138
+ //# sourceMappingURL=reject_if_block_timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reject_if_block_timeout.js","sourceRoot":"","sources":["../../../src/utils/reject_if_block_timeout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { FormatType, DataFormat, EthExecutionAPI, Web3BaseWalletAccount, HexString, TransactionReceipt, Transaction, TransactionCall, TransactionWithFromLocalWalletIndex, TransactionWithToLocalWalletIndex, TransactionWithFromAndToLocalWalletIndex, TransactionHash } from 'web3-types';
2
+ import { Web3Context, Web3PromiEvent } from 'web3-core';
3
+ import { JsonSchema } from 'web3-validator';
4
+ import { SendSignedTransactionEvents, SendTransactionEvents, SendTransactionOptions } from '../types.js';
5
+ export declare class SendTxHelper<ReturnFormat extends DataFormat, ResolveType = FormatType<TransactionReceipt, ReturnFormat>, TxType = Transaction | TransactionWithFromLocalWalletIndex | TransactionWithToLocalWalletIndex | TransactionWithFromAndToLocalWalletIndex> {
6
+ private readonly web3Context;
7
+ private readonly promiEvent;
8
+ private readonly options;
9
+ private readonly returnFormat;
10
+ constructor({ options, web3Context, promiEvent, returnFormat, }: {
11
+ web3Context: Web3Context<EthExecutionAPI>;
12
+ options: SendTransactionOptions<ResolveType>;
13
+ promiEvent: Web3PromiEvent<ResolveType, SendSignedTransactionEvents<ReturnFormat> | SendTransactionEvents<ReturnFormat>>;
14
+ returnFormat: ReturnFormat;
15
+ });
16
+ getReceiptWithEvents(data: TransactionReceipt): ResolveType;
17
+ checkRevertBeforeSending(tx: TransactionCall): Promise<void>;
18
+ emitSending(tx: TxType | HexString): void;
19
+ populateGasPrice({ transactionFormatted, transaction, }: {
20
+ transactionFormatted: TxType;
21
+ transaction: TxType;
22
+ }): Promise<TxType>;
23
+ signAndSend({ wallet, tx, }: {
24
+ wallet: Web3BaseWalletAccount | undefined;
25
+ tx: TxType;
26
+ }): Promise<string>;
27
+ emitSent(tx: TxType | HexString): void;
28
+ emitTransactionHash(hash: string & Uint8Array): void;
29
+ emitReceipt(receipt: ResolveType): void;
30
+ handleError({ error, tx }: {
31
+ error: unknown;
32
+ tx: TransactionCall;
33
+ }): Promise<unknown>;
34
+ emitConfirmation({ receipt, transactionHash, customTransactionReceiptSchema, }: {
35
+ receipt: ResolveType;
36
+ transactionHash: TransactionHash;
37
+ customTransactionReceiptSchema?: JsonSchema;
38
+ }): void;
39
+ handleResolve({ receipt, tx }: {
40
+ receipt: ResolveType;
41
+ tx: TransactionCall;
42
+ }): Promise<ResolveType>;
43
+ }