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