@metamask-previews/transaction-controller 46.0.0-preview-edbe12d8 → 46.0.0-preview-fefdb711
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TransactionController.cjs +70 -47
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +65 -70
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +65 -70
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +70 -47
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/api/accounts-api.cjs +2 -0
- package/dist/api/accounts-api.cjs.map +1 -1
- package/dist/api/accounts-api.d.cts +2 -0
- package/dist/api/accounts-api.d.cts.map +1 -1
- package/dist/api/accounts-api.d.mts +2 -0
- package/dist/api/accounts-api.d.mts.map +1 -1
- package/dist/api/accounts-api.mjs +2 -0
- package/dist/api/accounts-api.mjs.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.cjs +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.mjs +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/helpers/GasFeePoller.cjs +1 -0
- package/dist/helpers/GasFeePoller.cjs.map +1 -1
- package/dist/helpers/GasFeePoller.d.cts +1 -0
- package/dist/helpers/GasFeePoller.d.cts.map +1 -1
- package/dist/helpers/GasFeePoller.d.mts +1 -0
- package/dist/helpers/GasFeePoller.d.mts.map +1 -1
- package/dist/helpers/GasFeePoller.mjs +1 -0
- package/dist/helpers/GasFeePoller.mjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/MethodDataHelper.cjs.map +1 -1
- package/dist/helpers/MethodDataHelper.d.cts.map +1 -1
- package/dist/helpers/MethodDataHelper.d.mts.map +1 -1
- package/dist/helpers/MethodDataHelper.mjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.cjs +1 -21
- package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.mjs +1 -21
- package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
- package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
- package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
- package/dist/helpers/TransactionPoller.cjs +2 -0
- package/dist/helpers/TransactionPoller.cjs.map +1 -1
- package/dist/helpers/TransactionPoller.d.cts +2 -0
- package/dist/helpers/TransactionPoller.d.cts.map +1 -1
- package/dist/helpers/TransactionPoller.d.mts +2 -0
- package/dist/helpers/TransactionPoller.d.mts.map +1 -1
- package/dist/helpers/TransactionPoller.mjs +2 -0
- package/dist/helpers/TransactionPoller.mjs.map +1 -1
- package/dist/hooks/CollectPublishHook.cjs +84 -0
- package/dist/hooks/CollectPublishHook.cjs.map +1 -0
- package/dist/hooks/CollectPublishHook.d.cts +29 -0
- package/dist/hooks/CollectPublishHook.d.cts.map +1 -0
- package/dist/hooks/CollectPublishHook.d.mts +29 -0
- package/dist/hooks/CollectPublishHook.d.mts.map +1 -0
- package/dist/hooks/CollectPublishHook.mjs +80 -0
- package/dist/hooks/CollectPublishHook.mjs.map +1 -0
- package/dist/hooks/ExtraTransactionsPublishHook.cjs +84 -0
- package/dist/hooks/ExtraTransactionsPublishHook.cjs.map +1 -0
- package/dist/hooks/ExtraTransactionsPublishHook.d.cts +18 -0
- package/dist/hooks/ExtraTransactionsPublishHook.d.cts.map +1 -0
- package/dist/hooks/ExtraTransactionsPublishHook.d.mts +18 -0
- package/dist/hooks/ExtraTransactionsPublishHook.d.mts.map +1 -0
- package/dist/hooks/ExtraTransactionsPublishHook.mjs +80 -0
- package/dist/hooks/ExtraTransactionsPublishHook.mjs.map +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +74 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +74 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/batch.cjs +123 -1
- package/dist/utils/batch.cjs.map +1 -1
- package/dist/utils/batch.d.cts +7 -1
- package/dist/utils/batch.d.cts.map +1 -1
- package/dist/utils/batch.d.mts +7 -1
- package/dist/utils/batch.d.mts.map +1 -1
- package/dist/utils/batch.mjs +123 -1
- package/dist/utils/batch.mjs.map +1 -1
- package/dist/utils/gas-fees.cjs +48 -3
- package/dist/utils/gas-fees.cjs.map +1 -1
- package/dist/utils/gas-fees.d.cts +11 -0
- package/dist/utils/gas-fees.d.cts.map +1 -1
- package/dist/utils/gas-fees.d.mts +11 -0
- package/dist/utils/gas-fees.d.mts.map +1 -1
- package/dist/utils/gas-fees.mjs +48 -3
- package/dist/utils/gas-fees.mjs.map +1 -1
- package/dist/utils/gas-flow.cjs +4 -0
- package/dist/utils/gas-flow.cjs.map +1 -1
- package/dist/utils/gas-flow.d.cts +1 -0
- package/dist/utils/gas-flow.d.cts.map +1 -1
- package/dist/utils/gas-flow.d.mts +1 -0
- package/dist/utils/gas-flow.d.mts.map +1 -1
- package/dist/utils/gas-flow.mjs +4 -0
- package/dist/utils/gas-flow.mjs.map +1 -1
- package/dist/utils/gas.cjs +50 -1
- package/dist/utils/gas.cjs.map +1 -1
- package/dist/utils/gas.d.cts +22 -0
- package/dist/utils/gas.d.cts.map +1 -1
- package/dist/utils/gas.d.mts +22 -0
- package/dist/utils/gas.d.mts.map +1 -1
- package/dist/utils/gas.mjs +50 -1
- package/dist/utils/gas.mjs.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.cjs +5 -1
- package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.d.cts +4 -1
- package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.d.mts +4 -1
- package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.mjs +5 -1
- package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
- package/dist/utils/nonce.cjs +3 -3
- package/dist/utils/nonce.cjs.map +1 -1
- package/dist/utils/nonce.d.cts +2 -2
- package/dist/utils/nonce.d.cts.map +1 -1
- package/dist/utils/nonce.d.mts +2 -2
- package/dist/utils/nonce.d.mts.map +1 -1
- package/dist/utils/nonce.mjs +3 -3
- package/dist/utils/nonce.mjs.map +1 -1
- package/dist/utils/retry.cjs +4 -0
- package/dist/utils/retry.cjs.map +1 -1
- package/dist/utils/retry.d.cts +1 -0
- package/dist/utils/retry.d.cts.map +1 -1
- package/dist/utils/retry.d.mts +1 -0
- package/dist/utils/retry.d.mts.map +1 -1
- package/dist/utils/retry.mjs +4 -0
- package/dist/utils/retry.mjs.map +1 -1
- package/dist/utils/simulation-api.cjs +6 -0
- package/dist/utils/simulation-api.cjs.map +1 -1
- package/dist/utils/simulation-api.d.cts +2 -0
- package/dist/utils/simulation-api.d.cts.map +1 -1
- package/dist/utils/simulation-api.d.mts +2 -0
- package/dist/utils/simulation-api.d.mts.map +1 -1
- package/dist/utils/simulation-api.mjs +6 -0
- package/dist/utils/simulation-api.mjs.map +1 -1
- package/dist/utils/simulation.cjs +19 -5
- package/dist/utils/simulation.cjs.map +1 -1
- package/dist/utils/simulation.d.cts +3 -1
- package/dist/utils/simulation.d.cts.map +1 -1
- package/dist/utils/simulation.d.mts +3 -1
- package/dist/utils/simulation.d.mts.map +1 -1
- package/dist/utils/simulation.mjs +19 -5
- package/dist/utils/simulation.mjs.map +1 -1
- package/dist/utils/swaps.cjs +2 -1
- package/dist/utils/swaps.cjs.map +1 -1
- package/dist/utils/swaps.d.cts +1 -0
- package/dist/utils/swaps.d.cts.map +1 -1
- package/dist/utils/swaps.d.mts +1 -0
- package/dist/utils/swaps.d.mts.map +1 -1
- package/dist/utils/swaps.mjs +2 -1
- package/dist/utils/swaps.mjs.map +1 -1
- package/dist/utils/transaction-type.cjs +3 -1
- package/dist/utils/transaction-type.cjs.map +1 -1
- package/dist/utils/transaction-type.mjs +3 -1
- package/dist/utils/transaction-type.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
13
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
|
-
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory;
|
|
16
|
+
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
|
|
19
19
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -23,7 +23,6 @@ const network_controller_1 = require("@metamask/network-controller");
|
|
|
23
23
|
const nonce_tracker_1 = require("@metamask/nonce-tracker");
|
|
24
24
|
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
25
25
|
const utils_1 = require("@metamask/utils");
|
|
26
|
-
const async_mutex_1 = require("async-mutex");
|
|
27
26
|
// This package purposefully relies on Node's EventEmitter module.
|
|
28
27
|
// eslint-disable-next-line import-x/no-nodejs-modules
|
|
29
28
|
const events_1 = require("events");
|
|
@@ -42,6 +41,7 @@ const MethodDataHelper_1 = require("./helpers/MethodDataHelper.cjs");
|
|
|
42
41
|
const MultichainTrackingHelper_1 = require("./helpers/MultichainTrackingHelper.cjs");
|
|
43
42
|
const PendingTransactionTracker_1 = require("./helpers/PendingTransactionTracker.cjs");
|
|
44
43
|
const ResimulateHelper_1 = require("./helpers/ResimulateHelper.cjs");
|
|
44
|
+
const ExtraTransactionsPublishHook_1 = require("./hooks/ExtraTransactionsPublishHook.cjs");
|
|
45
45
|
const logger_1 = require("./logger.cjs");
|
|
46
46
|
const types_1 = require("./types.cjs");
|
|
47
47
|
const batch_1 = require("./utils/batch.cjs");
|
|
@@ -154,31 +154,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
154
154
|
* Constructs a TransactionController.
|
|
155
155
|
*
|
|
156
156
|
* @param options - The controller options.
|
|
157
|
-
* @param options.disableHistory - Whether to disable storing history in transaction metadata.
|
|
158
|
-
* @param options.disableSendFlowHistory - Explicitly disable transaction metadata history.
|
|
159
|
-
* @param options.disableSwaps - Whether to disable additional processing on swaps transactions.
|
|
160
|
-
* @param options.getCurrentAccountEIP1559Compatibility - Whether or not the account supports EIP-1559.
|
|
161
|
-
* @param options.getCurrentNetworkEIP1559Compatibility - Whether or not the network supports EIP-1559.
|
|
162
|
-
* @param options.getExternalPendingTransactions - Callback to retrieve pending transactions from external sources.
|
|
163
|
-
* @param options.getGasFeeEstimates - Callback to retrieve gas fee estimates.
|
|
164
|
-
* @param options.getNetworkClientRegistry - Gets the network client registry.
|
|
165
|
-
* @param options.getNetworkState - Gets the state of the network controller.
|
|
166
|
-
* @param options.getPermittedAccounts - Get accounts that a given origin has permissions for.
|
|
167
|
-
* @param options.getSavedGasFees - Gets the saved gas fee config.
|
|
168
|
-
* @param options.incomingTransactions - Configuration options for incoming transaction support.
|
|
169
|
-
* @param options.isFirstTimeInteractionEnabled - Whether first time interaction checks are enabled.
|
|
170
|
-
* @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.
|
|
171
|
-
* @param options.messenger - The controller messenger.
|
|
172
|
-
* @param options.pendingTransactions - Configuration options for pending transaction support.
|
|
173
|
-
* @param options.securityProviderRequest - A function for verifying a transaction, whether it is malicious or not.
|
|
174
|
-
* @param options.sign - Function used to sign transactions.
|
|
175
|
-
* @param options.state - Initial state to set on this controller.
|
|
176
|
-
* @param options.testGasFeeFlows - Whether to use the test gas fee flow.
|
|
177
|
-
* @param options.trace - Callback to generate trace information.
|
|
178
|
-
* @param options.transactionHistoryLimit - Transaction history limit.
|
|
179
|
-
* @param options.hooks - The controller hooks.
|
|
180
157
|
*/
|
|
181
|
-
constructor(
|
|
158
|
+
constructor(options) {
|
|
159
|
+
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
182
160
|
super({
|
|
183
161
|
name: controllerName,
|
|
184
162
|
metadata,
|
|
@@ -192,11 +170,11 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
192
170
|
_TransactionController_internalEvents.set(this, new events_1.EventEmitter());
|
|
193
171
|
this.approvingTransactionIds = new Set();
|
|
194
172
|
_TransactionController_methodDataHelper.set(this, void 0);
|
|
195
|
-
this.mutex = new async_mutex_1.Mutex();
|
|
196
173
|
_TransactionController_incomingTransactionChainIds.set(this, new Set());
|
|
197
174
|
_TransactionController_incomingTransactionHelper.set(this, void 0);
|
|
198
175
|
_TransactionController_incomingTransactionOptions.set(this, void 0);
|
|
199
176
|
_TransactionController_pendingTransactionOptions.set(this, void 0);
|
|
177
|
+
_TransactionController_publishBatchHook.set(this, void 0);
|
|
200
178
|
this.signAbortCallbacks = new Map();
|
|
201
179
|
_TransactionController_trace.set(this, void 0);
|
|
202
180
|
_TransactionController_transactionHistoryLimit.set(this, void 0);
|
|
@@ -227,6 +205,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
227
205
|
this.securityProviderRequest = securityProviderRequest;
|
|
228
206
|
__classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
|
|
229
207
|
__classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
|
|
208
|
+
__classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
|
|
230
209
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
231
210
|
this.sign = sign;
|
|
232
211
|
__classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
|
|
@@ -341,8 +320,11 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
341
320
|
getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
|
|
342
321
|
getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
|
|
343
322
|
getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
|
|
323
|
+
getTransaction: (transactionId) => this.getTransactionOrThrow(transactionId),
|
|
344
324
|
messenger: this.messagingSystem,
|
|
325
|
+
publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
|
|
345
326
|
request,
|
|
327
|
+
updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
|
|
346
328
|
});
|
|
347
329
|
}
|
|
348
330
|
/**
|
|
@@ -366,10 +348,12 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
366
348
|
* @param txParams - Standard parameters for an Ethereum transaction.
|
|
367
349
|
* @param options - Additional options to control how the transaction is added.
|
|
368
350
|
* @param options.actionId - Unique ID to prevent duplicate requests.
|
|
351
|
+
* @param options.batchId - ID of the batch this transaction belongs to.
|
|
369
352
|
* @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
|
|
370
353
|
* @param options.method - RPC method that requested the transaction.
|
|
371
354
|
* @param options.nestedTransactions - Params for any nested transactions encoded in the data.
|
|
372
355
|
* @param options.origin - The origin of the transaction request, such as a dApp hostname.
|
|
356
|
+
* @param options.publishHook - Custom logic to publish the transaction.
|
|
373
357
|
* @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
|
|
374
358
|
* @param options.securityAlertResponse - Response from security validator.
|
|
375
359
|
* @param options.sendFlowHistory - The sendFlowHistory entries to add.
|
|
@@ -383,7 +367,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
383
367
|
*/
|
|
384
368
|
async addTransaction(txParams, options) {
|
|
385
369
|
(0, logger_1.projectLogger)('Adding transaction', txParams, options);
|
|
386
|
-
const { actionId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
|
|
370
|
+
const { actionId, batchId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, publishHook, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
|
|
387
371
|
txParams = (0, utils_2.normalizeTransactionParams)(txParams);
|
|
388
372
|
if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
|
|
389
373
|
throw new Error(`Network client not found - ${networkClientId}`);
|
|
@@ -417,6 +401,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
417
401
|
: {
|
|
418
402
|
// Add actionId to txMeta to check if same actionId is seen again
|
|
419
403
|
actionId,
|
|
404
|
+
batchId,
|
|
420
405
|
chainId,
|
|
421
406
|
dappSuggestedGasFees,
|
|
422
407
|
deviceConfirmedOn,
|
|
@@ -477,9 +462,10 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
477
462
|
}
|
|
478
463
|
return {
|
|
479
464
|
result: this.processApproval(addedTransactionMeta, {
|
|
465
|
+
actionId,
|
|
480
466
|
isExisting: Boolean(existingTransactionMeta),
|
|
467
|
+
publishHook,
|
|
481
468
|
requireApproval,
|
|
482
|
-
actionId,
|
|
483
469
|
traceContext,
|
|
484
470
|
}),
|
|
485
471
|
transactionMeta: addedTransactionMeta,
|
|
@@ -513,7 +499,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
513
499
|
* @param options.estimatedBaseFee - The estimated base fee of the transaction.
|
|
514
500
|
*/
|
|
515
501
|
async stopTransaction(transactionId, gasValues, { estimatedBaseFee, actionId, } = {}) {
|
|
516
|
-
|
|
502
|
+
await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
|
|
517
503
|
actionId,
|
|
518
504
|
estimatedBaseFee,
|
|
519
505
|
gasValues,
|
|
@@ -542,7 +528,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
542
528
|
* @param options.estimatedBaseFee - The estimated base fee of the transaction.
|
|
543
529
|
*/
|
|
544
530
|
async speedUpTransaction(transactionId, gasValues, { actionId, estimatedBaseFee, } = {}) {
|
|
545
|
-
|
|
531
|
+
await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
|
|
546
532
|
actionId,
|
|
547
533
|
estimatedBaseFee,
|
|
548
534
|
gasValues,
|
|
@@ -575,6 +561,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
575
561
|
* @param transaction - The transaction params to estimate gas for.
|
|
576
562
|
* @param multiplier - The multiplier to use for the gas buffer.
|
|
577
563
|
* @param networkClientId - The network client id to use for the estimate.
|
|
564
|
+
* @returns The buffered estimated gas and whether the estimation failed.
|
|
578
565
|
*/
|
|
579
566
|
async estimateGasBuffered(transaction, multiplier, networkClientId) {
|
|
580
567
|
const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
|
|
@@ -1061,6 +1048,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1061
1048
|
* @param request.transactionParams - The transaction parameters to estimate the layer 1 gas fee for.
|
|
1062
1049
|
* @param request.chainId - The ID of the chain where the transaction will be executed.
|
|
1063
1050
|
* @param request.networkClientId - The ID of a specific network client to process the transaction.
|
|
1051
|
+
* @returns The layer 1 gas fee.
|
|
1064
1052
|
*/
|
|
1065
1053
|
async getLayer1GasFee({ transactionParams, chainId, networkClientId, }) {
|
|
1066
1054
|
const provider = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, {
|
|
@@ -1123,6 +1111,23 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1123
1111
|
abortCallback();
|
|
1124
1112
|
this.signAbortCallbacks.delete(transactionId);
|
|
1125
1113
|
}
|
|
1114
|
+
/**
|
|
1115
|
+
* Update the batch transactions associated with a transaction.
|
|
1116
|
+
* These transactions will be submitted with the main transaction as a batch.
|
|
1117
|
+
*
|
|
1118
|
+
* @param request - The request object.
|
|
1119
|
+
* @param request.transactionId - The ID of the transaction to update.
|
|
1120
|
+
* @param request.batchTransactions - The new batch transactions.
|
|
1121
|
+
*/
|
|
1122
|
+
updateBatchTransactions({ transactionId, batchTransactions, }) {
|
|
1123
|
+
(0, logger_1.projectLogger)('Updating batch transactions', { transactionId, batchTransactions });
|
|
1124
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
1125
|
+
transactionId,
|
|
1126
|
+
note: 'TransactionController#updateBatchTransactions - Batch transactions updated',
|
|
1127
|
+
}, (transactionMeta) => {
|
|
1128
|
+
transactionMeta.batchTransactions = batchTransactions;
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1126
1131
|
addMetadata(transactionMeta) {
|
|
1127
1132
|
(0, validation_1.validateTxParams)(transactionMeta.txParams);
|
|
1128
1133
|
this.update((state) => {
|
|
@@ -1172,7 +1177,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1172
1177
|
this.failTransaction(transactionMeta, new Error('Transaction incomplete at startup'));
|
|
1173
1178
|
}
|
|
1174
1179
|
}
|
|
1175
|
-
async processApproval(transactionMeta, { isExisting = false, requireApproval, shouldShowRequest = true,
|
|
1180
|
+
async processApproval(transactionMeta, { actionId, isExisting = false, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
|
|
1176
1181
|
const transactionId = transactionMeta.id;
|
|
1177
1182
|
let resultCallbacks;
|
|
1178
1183
|
const { meta, isCompleted } = this.isTransactionCompleted(transactionId);
|
|
@@ -1199,7 +1204,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1199
1204
|
}
|
|
1200
1205
|
const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
|
|
1201
1206
|
if (!isTxCompleted) {
|
|
1202
|
-
const approvalResult = await this.approveTransaction(transactionId, traceContext);
|
|
1207
|
+
const approvalResult = await this.approveTransaction(transactionId, traceContext, publishHook);
|
|
1203
1208
|
if (approvalResult === ApprovalState.SkippedViaBeforePublishHook &&
|
|
1204
1209
|
resultCallbacks) {
|
|
1205
1210
|
resultCallbacks.success();
|
|
@@ -1233,7 +1238,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1233
1238
|
switch (finalMeta?.status) {
|
|
1234
1239
|
case types_1.TransactionStatus.failed:
|
|
1235
1240
|
resultCallbacks?.error(finalMeta.error);
|
|
1236
|
-
throw rpc_errors_1.rpcErrors.internal(finalMeta.error.
|
|
1241
|
+
throw rpc_errors_1.rpcErrors.internal(finalMeta.error.stack);
|
|
1237
1242
|
case types_1.TransactionStatus.submitted:
|
|
1238
1243
|
resultCallbacks?.success();
|
|
1239
1244
|
return finalMeta.hash;
|
|
@@ -1251,11 +1256,14 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1251
1256
|
*
|
|
1252
1257
|
* @param transactionId - The ID of the transaction to approve.
|
|
1253
1258
|
* @param traceContext - The parent context for any new traces.
|
|
1259
|
+
* @param publishHookOverride - Custom logic to publish the transaction.
|
|
1260
|
+
* @returns The state of the approval.
|
|
1254
1261
|
*/
|
|
1255
|
-
async approveTransaction(transactionId, traceContext) {
|
|
1256
|
-
|
|
1257
|
-
|
|
1262
|
+
async approveTransaction(transactionId, traceContext, publishHookOverride) {
|
|
1263
|
+
let clearApprovingTransactionId;
|
|
1264
|
+
let clearNonceLock;
|
|
1258
1265
|
let transactionMeta = this.getTransactionOrThrow(transactionId);
|
|
1266
|
+
(0, logger_1.projectLogger)('Approving transaction', transactionMeta);
|
|
1259
1267
|
try {
|
|
1260
1268
|
if (!this.sign) {
|
|
1261
1269
|
this.failTransaction(transactionMeta, new Error('No sign method defined.'));
|
|
@@ -1270,10 +1278,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1270
1278
|
return ApprovalState.NotApproved;
|
|
1271
1279
|
}
|
|
1272
1280
|
this.approvingTransactionIds.add(transactionId);
|
|
1273
|
-
|
|
1281
|
+
clearApprovingTransactionId = () => this.approvingTransactionIds.delete(transactionId);
|
|
1274
1282
|
const [nonce, releaseNonce] = await (0, nonce_1.getNextNonce)(transactionMeta, (address) => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNonceLock(address, transactionMeta.networkClientId));
|
|
1275
|
-
|
|
1276
|
-
releaseNonce && cleanupTasks.push(releaseNonce);
|
|
1283
|
+
clearNonceLock = releaseNonce;
|
|
1277
1284
|
transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
1278
1285
|
transactionId,
|
|
1279
1286
|
note: 'TransactionController#approveTransaction - Transaction approved',
|
|
@@ -1310,8 +1317,19 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1310
1317
|
}
|
|
1311
1318
|
(0, logger_1.projectLogger)('Publishing transaction', transactionMeta.txParams);
|
|
1312
1319
|
let hash;
|
|
1320
|
+
clearNonceLock?.();
|
|
1321
|
+
clearNonceLock = undefined;
|
|
1322
|
+
if (transactionMeta.batchTransactions?.length) {
|
|
1323
|
+
(0, logger_1.projectLogger)('Found batch transactions', transactionMeta.batchTransactions);
|
|
1324
|
+
const extraTransactionsPublishHook = new ExtraTransactionsPublishHook_1.ExtraTransactionsPublishHook({
|
|
1325
|
+
addTransactionBatch: this.addTransactionBatch.bind(this),
|
|
1326
|
+
transactions: transactionMeta.batchTransactions,
|
|
1327
|
+
});
|
|
1328
|
+
publishHookOverride = extraTransactionsPublishHook.getHook();
|
|
1329
|
+
}
|
|
1313
1330
|
await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Publish', parentContext: traceContext }, async () => {
|
|
1314
|
-
|
|
1331
|
+
const publishHook = publishHookOverride ?? this.publish;
|
|
1332
|
+
({ transactionHash: hash } = await publishHook(transactionMeta, rawTx));
|
|
1315
1333
|
if (hash === undefined) {
|
|
1316
1334
|
hash = await this.publishTransaction(ethQuery, {
|
|
1317
1335
|
...transactionMeta,
|
|
@@ -1347,7 +1365,8 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1347
1365
|
return ApprovalState.NotApproved;
|
|
1348
1366
|
}
|
|
1349
1367
|
finally {
|
|
1350
|
-
|
|
1368
|
+
clearApprovingTransactionId?.();
|
|
1369
|
+
clearNonceLock?.();
|
|
1351
1370
|
}
|
|
1352
1371
|
}
|
|
1353
1372
|
async publishTransaction(ethQuery, transactionMeta, { skipSubmitHistory } = {}) {
|
|
@@ -1702,8 +1721,8 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1702
1721
|
transactionMeta,
|
|
1703
1722
|
});
|
|
1704
1723
|
}
|
|
1705
|
-
getNonceTrackerTransactions(
|
|
1706
|
-
return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address,
|
|
1724
|
+
getNonceTrackerTransactions(statuses, address, chainId) {
|
|
1725
|
+
return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, statuses, this.state.transactions);
|
|
1707
1726
|
}
|
|
1708
1727
|
onConfirmedTransaction(transactionMeta) {
|
|
1709
1728
|
(0, logger_1.projectLogger)('Processing confirmed transaction', transactionMeta.id);
|
|
@@ -1764,7 +1783,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1764
1783
|
}
|
|
1765
1784
|
}
|
|
1766
1785
|
exports.TransactionController = TransactionController;
|
|
1767
|
-
_TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
|
|
1786
|
+
_TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
|
|
1768
1787
|
// If transaction is found for same action id, do not create a new transaction.
|
|
1769
1788
|
if (this.getTransactionWithActionId(actionId)) {
|
|
1770
1789
|
return;
|
|
@@ -1854,7 +1873,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
1854
1873
|
// TODO: Fix types
|
|
1855
1874
|
blockTracker,
|
|
1856
1875
|
getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
|
|
1857
|
-
getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed, chainId),
|
|
1876
|
+
getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, [types_1.TransactionStatus.confirmed], chainId),
|
|
1858
1877
|
});
|
|
1859
1878
|
}, _TransactionController_createPendingTransactionTracker = function _TransactionController_createPendingTransactionTracker({ provider, blockTracker, chainId, networkClientId, }) {
|
|
1860
1879
|
const ethQuery = new eth_query_1.default(provider);
|
|
@@ -1893,7 +1912,11 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
1893
1912
|
pendingTransactionTracker.hub.on('transaction-failed', this.failTransaction.bind(this));
|
|
1894
1913
|
pendingTransactionTracker.hub.on('transaction-updated', this.updateTransaction.bind(this));
|
|
1895
1914
|
}, _TransactionController_getNonceTrackerPendingTransactions = function _TransactionController_getNonceTrackerPendingTransactions(chainId, address) {
|
|
1896
|
-
const standardPendingTransactions = this.getNonceTrackerTransactions(
|
|
1915
|
+
const standardPendingTransactions = this.getNonceTrackerTransactions([
|
|
1916
|
+
types_1.TransactionStatus.approved,
|
|
1917
|
+
types_1.TransactionStatus.signed,
|
|
1918
|
+
types_1.TransactionStatus.submitted,
|
|
1919
|
+
], address, chainId);
|
|
1897
1920
|
const externalPendingTransactions = this.getExternalPendingTransactions(address, chainId);
|
|
1898
1921
|
return [...standardPendingTransactions, ...externalPendingTransactions];
|
|
1899
1922
|
}, _TransactionController_getGasFeeFlows = function _TransactionController_getGasFeeFlows() {
|