@metamask/transaction-controller 56.1.0 → 56.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/dist/TransactionController.cjs +14 -0
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +4 -2
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +4 -2
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +15 -1
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/helpers/PendingTransactionTracker.cjs +34 -3
  11. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  12. package/dist/helpers/PendingTransactionTracker.d.cts +12 -0
  13. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  14. package/dist/helpers/PendingTransactionTracker.d.mts +12 -0
  15. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  16. package/dist/helpers/PendingTransactionTracker.mjs +34 -3
  17. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  18. package/dist/hooks/SequentialPublishBatchHook.cjs +114 -0
  19. package/dist/hooks/SequentialPublishBatchHook.cjs.map +1 -0
  20. package/dist/hooks/SequentialPublishBatchHook.d.cts +24 -0
  21. package/dist/hooks/SequentialPublishBatchHook.d.cts.map +1 -0
  22. package/dist/hooks/SequentialPublishBatchHook.d.mts +24 -0
  23. package/dist/hooks/SequentialPublishBatchHook.d.mts.map +1 -0
  24. package/dist/hooks/SequentialPublishBatchHook.mjs +110 -0
  25. package/dist/hooks/SequentialPublishBatchHook.mjs.map +1 -0
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +1 -1
  28. package/dist/index.d.cts.map +1 -1
  29. package/dist/index.d.mts +1 -1
  30. package/dist/index.d.mts.map +1 -1
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/types.cjs.map +1 -1
  33. package/dist/types.d.cts +28 -1
  34. package/dist/types.d.cts.map +1 -1
  35. package/dist/types.d.mts +28 -1
  36. package/dist/types.d.mts.map +1 -1
  37. package/dist/types.mjs.map +1 -1
  38. package/dist/utils/batch.cjs +100 -9
  39. package/dist/utils/batch.cjs.map +1 -1
  40. package/dist/utils/batch.d.cts +7 -0
  41. package/dist/utils/batch.d.cts.map +1 -1
  42. package/dist/utils/batch.d.mts +7 -0
  43. package/dist/utils/batch.d.mts.map +1 -1
  44. package/dist/utils/batch.mjs +100 -9
  45. package/dist/utils/batch.mjs.map +1 -1
  46. package/dist/utils/eip7702.cjs +3 -4
  47. package/dist/utils/eip7702.cjs.map +1 -1
  48. package/dist/utils/eip7702.mjs +3 -4
  49. package/dist/utils/eip7702.mjs.map +1 -1
  50. package/dist/utils/gas-fees.cjs +3 -7
  51. package/dist/utils/gas-fees.cjs.map +1 -1
  52. package/dist/utils/gas-fees.d.cts.map +1 -1
  53. package/dist/utils/gas-fees.d.mts.map +1 -1
  54. package/dist/utils/gas-fees.mjs +3 -7
  55. package/dist/utils/gas-fees.mjs.map +1 -1
  56. package/dist/utils/prepare.cjs +45 -1
  57. package/dist/utils/prepare.cjs.map +1 -1
  58. package/dist/utils/prepare.d.cts.map +1 -1
  59. package/dist/utils/prepare.d.mts.map +1 -1
  60. package/dist/utils/prepare.mjs +46 -1
  61. package/dist/utils/prepare.mjs.map +1 -1
  62. package/dist/utils/transaction-type.cjs +4 -1
  63. package/dist/utils/transaction-type.cjs.map +1 -1
  64. package/dist/utils/transaction-type.d.cts.map +1 -1
  65. package/dist/utils/transaction-type.d.mts.map +1 -1
  66. package/dist/utils/transaction-type.mjs +4 -1
  67. package/dist/utils/transaction-type.mjs.map +1 -1
  68. package/dist/utils/validation.cjs +2 -2
  69. package/dist/utils/validation.cjs.map +1 -1
  70. package/dist/utils/validation.mjs +2 -2
  71. package/dist/utils/validation.mjs.map +1 -1
  72. package/package.json +2 -2
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _SequentialPublishBatchHook_instances, _SequentialPublishBatchHook_publishTransaction, _SequentialPublishBatchHook_getTransaction, _SequentialPublishBatchHook_getEthQuery, _SequentialPublishBatchHook_getPendingTransactionTracker, _SequentialPublishBatchHook_boundListeners, _SequentialPublishBatchHook_hook, _SequentialPublishBatchHook_waitForTransactionEvent, _SequentialPublishBatchHook_onConfirmed, _SequentialPublishBatchHook_onFailedOrDropped, _SequentialPublishBatchHook_removeListeners;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SequentialPublishBatchHook = void 0;
16
+ const rpc_errors_1 = require("@metamask/rpc-errors");
17
+ const utils_1 = require("@metamask/utils");
18
+ const logger_1 = require("../logger.cjs");
19
+ const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'sequential-publish-batch-hook');
20
+ /**
21
+ * Custom publish logic that also publishes additional sequential transactions in a batch.
22
+ * Requires the batch to be successful to resolve.
23
+ */
24
+ class SequentialPublishBatchHook {
25
+ constructor({ publishTransaction, getTransaction, getPendingTransactionTracker, getEthQuery, }) {
26
+ _SequentialPublishBatchHook_instances.add(this);
27
+ _SequentialPublishBatchHook_publishTransaction.set(this, void 0);
28
+ _SequentialPublishBatchHook_getTransaction.set(this, void 0);
29
+ _SequentialPublishBatchHook_getEthQuery.set(this, void 0);
30
+ _SequentialPublishBatchHook_getPendingTransactionTracker.set(this, void 0);
31
+ _SequentialPublishBatchHook_boundListeners.set(this, {});
32
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_publishTransaction, publishTransaction, "f");
33
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getTransaction, getTransaction, "f");
34
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getEthQuery, getEthQuery, "f");
35
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getPendingTransactionTracker, getPendingTransactionTracker, "f");
36
+ }
37
+ /**
38
+ * @returns The publish batch hook function.
39
+ */
40
+ getHook() {
41
+ return __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_hook).bind(this);
42
+ }
43
+ }
44
+ exports.SequentialPublishBatchHook = SequentialPublishBatchHook;
45
+ _SequentialPublishBatchHook_publishTransaction = new WeakMap(), _SequentialPublishBatchHook_getTransaction = new WeakMap(), _SequentialPublishBatchHook_getEthQuery = new WeakMap(), _SequentialPublishBatchHook_getPendingTransactionTracker = new WeakMap(), _SequentialPublishBatchHook_boundListeners = new WeakMap(), _SequentialPublishBatchHook_instances = new WeakSet(), _SequentialPublishBatchHook_hook = async function _SequentialPublishBatchHook_hook({ from, networkClientId, transactions, }) {
46
+ log('Starting sequential publish batch hook', { from, networkClientId });
47
+ const pendingTransactionTracker = __classPrivateFieldGet(this, _SequentialPublishBatchHook_getPendingTransactionTracker, "f").call(this, networkClientId);
48
+ const results = [];
49
+ for (const transaction of transactions) {
50
+ try {
51
+ const transactionMeta = __classPrivateFieldGet(this, _SequentialPublishBatchHook_getTransaction, "f").call(this, String(transaction.id));
52
+ const transactionHash = await __classPrivateFieldGet(this, _SequentialPublishBatchHook_publishTransaction, "f").call(this, __classPrivateFieldGet(this, _SequentialPublishBatchHook_getEthQuery, "f").call(this, networkClientId), transactionMeta);
53
+ log('Transaction published', { transactionHash });
54
+ const transactionUpdated = {
55
+ ...transactionMeta,
56
+ hash: transactionHash,
57
+ };
58
+ const confirmationPromise = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_waitForTransactionEvent).call(this, pendingTransactionTracker, transactionUpdated.id, transactionUpdated.hash);
59
+ pendingTransactionTracker.addTransactionToPoll(transactionUpdated);
60
+ await confirmationPromise;
61
+ results.push({ transactionHash });
62
+ }
63
+ catch (error) {
64
+ log('Batch transaction failed', { transaction, error });
65
+ pendingTransactionTracker.stop();
66
+ throw rpc_errors_1.rpcErrors.internal(`Failed to publish batch transaction`);
67
+ }
68
+ }
69
+ log('Sequential publish batch hook completed', { results });
70
+ pendingTransactionTracker.stop();
71
+ return { results };
72
+ }, _SequentialPublishBatchHook_waitForTransactionEvent =
73
+ /**
74
+ * Waits for a transaction event (confirmed, failed, or dropped) and resolves/rejects accordingly.
75
+ *
76
+ * @param pendingTransactionTracker - The tracker instance to subscribe to events.
77
+ * @param transactionId - The transaction ID.
78
+ * @param transactionHash - The hash of the transaction.
79
+ * @returns A promise that resolves when the transaction is confirmed or rejects if it fails or is dropped.
80
+ */
81
+ async function _SequentialPublishBatchHook_waitForTransactionEvent(pendingTransactionTracker, transactionId, transactionHash) {
82
+ return new Promise((resolve, reject) => {
83
+ const onConfirmed = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_onConfirmed).bind(this, transactionId, transactionHash, resolve, pendingTransactionTracker);
84
+ const onFailedOrDropped = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_onFailedOrDropped).bind(this, transactionId, transactionHash, reject, pendingTransactionTracker);
85
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId] = {
86
+ onConfirmed,
87
+ onFailedOrDropped,
88
+ };
89
+ pendingTransactionTracker.hub.on('transaction-confirmed', onConfirmed);
90
+ pendingTransactionTracker.hub.on('transaction-failed', onFailedOrDropped);
91
+ pendingTransactionTracker.hub.on('transaction-dropped', onFailedOrDropped);
92
+ });
93
+ }, _SequentialPublishBatchHook_onConfirmed = function _SequentialPublishBatchHook_onConfirmed(transactionId, transactionHash, resolve, pendingTransactionTracker, txMeta) {
94
+ if (txMeta.id !== transactionId) {
95
+ return;
96
+ }
97
+ log('Transaction confirmed', { transactionHash });
98
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_removeListeners).call(this, pendingTransactionTracker, transactionId);
99
+ resolve(txMeta);
100
+ }, _SequentialPublishBatchHook_onFailedOrDropped = function _SequentialPublishBatchHook_onFailedOrDropped(transactionId, transactionHash, reject, pendingTransactionTracker, txMeta, error) {
101
+ if (txMeta.id !== transactionId) {
102
+ return;
103
+ }
104
+ log('Transaction failed or dropped', { transactionHash, error });
105
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_removeListeners).call(this, pendingTransactionTracker, transactionId);
106
+ reject(new Error(`Transaction ${transactionHash} failed or dropped.`));
107
+ }, _SequentialPublishBatchHook_removeListeners = function _SequentialPublishBatchHook_removeListeners(pendingTransactionTracker, transactionId) {
108
+ const listeners = __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId];
109
+ pendingTransactionTracker.hub.off('transaction-confirmed', listeners.onConfirmed);
110
+ pendingTransactionTracker.hub.off('transaction-failed', listeners.onFailedOrDropped);
111
+ pendingTransactionTracker.hub.off('transaction-dropped', listeners.onFailedOrDropped);
112
+ delete __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId];
113
+ };
114
+ //# sourceMappingURL=SequentialPublishBatchHook.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequentialPublishBatchHook.cjs","sourceRoot":"","sources":["../../src/hooks/SequentialPublishBatchHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,qDAAiD;AACjD,2CAAqD;AAIrD,0CAA0C;AAQ1C,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,+BAA+B,CAAC,CAAC;AAc/E;;;GAGG;AACH,MAAa,0BAA0B;IAsBrC,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,4BAA4B,EAC5B,WAAW,GACuB;;QA1B3B,iEAGS;QAET,6DAAiD;QAEjD,0DAAoD;QAEpD,2EAEsB;QAE/B,qDAMI,EAAE,EAAC;QAQL,uBAAA,IAAI,kDAAuB,kBAAkB,MAAA,CAAC;QAC9C,uBAAA,IAAI,8CAAmB,cAAc,MAAA,CAAC;QACtC,uBAAA,IAAI,2CAAgB,WAAW,MAAA,CAAC;QAChC,uBAAA,IAAI,4DAAiC,4BAA4B,MAAA,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,uBAAA,IAAI,+EAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CAqJF;AA5LD,gEA4LC;qZAnJC,KAAK,2CAAO,EACV,IAAI,EACJ,eAAe,EACf,YAAY,GACY;IACxB,GAAG,CAAC,wCAAwC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAEzE,MAAM,yBAAyB,GAC7B,uBAAA,IAAI,gEAA8B,MAAlC,IAAI,EAA+B,eAAe,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,IAAI;YACF,MAAM,eAAe,GAAG,uBAAA,IAAI,kDAAgB,MAApB,IAAI,EAAiB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAErE,MAAM,eAAe,GAAG,MAAM,uBAAA,IAAI,sDAAoB,MAAxB,IAAI,EAChC,uBAAA,IAAI,+CAAa,MAAjB,IAAI,EAAc,eAAe,CAAC,EAClC,eAAe,CAChB,CAAC;YACF,GAAG,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;YAElD,MAAM,kBAAkB,GAAG;gBACzB,GAAG,eAAe;gBAClB,IAAI,EAAE,eAAe;aACtB,CAAC;YAEF,MAAM,mBAAmB,GAAG,uBAAA,IAAI,kGAAyB,MAA7B,IAAI,EAC9B,yBAAyB,EACzB,kBAAkB,CAAC,EAAE,EACrB,kBAAkB,CAAC,IAAI,CACxB,CAAC;YAEF,yBAAyB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;YAEnE,MAAM,mBAAmB,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,GAAG,CAAC,0BAA0B,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,yBAAyB,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SACjE;KACF;IAED,GAAG,CAAC,yCAAyC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,yBAAyB,CAAC,IAAI,EAAE,CAAC;IAEjC,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,8DACH,yBAAoD,EACpD,aAAqB,EACrB,eAAuB;IAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,uBAAA,IAAI,sFAAa,CAAC,IAAI,CACxC,IAAI,EACJ,aAAa,EACb,eAAe,EACf,OAAO,EACP,yBAAyB,CAC1B,CAAC;QAEF,MAAM,iBAAiB,GAAG,uBAAA,IAAI,4FAAmB,CAAC,IAAI,CACpD,IAAI,EACJ,aAAa,EACb,eAAe,EACf,MAAM,EACN,yBAAyB,CAC1B,CAAC;QAEF,uBAAA,IAAI,kDAAgB,CAAC,aAAa,CAAC,GAAG;YACpC,WAAW;YACX,iBAAiB;SAClB,CAAC;QAEF,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACvE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;QAC1E,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAC9B,qBAAqB,EACrB,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,6FAGC,aAAqB,EACrB,eAAuB,EACvB,OAA0C,EAC1C,yBAAoD,EACpD,MAAuB;IAEvB,IAAI,MAAM,CAAC,EAAE,KAAK,aAAa,EAAE;QAC/B,OAAO;KACR;IAED,GAAG,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAClD,uBAAA,IAAI,0FAAiB,MAArB,IAAI,EAAkB,yBAAyB,EAAE,aAAa,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,yGAGC,aAAqB,EACrB,eAAuB,EACvB,MAA8B,EAC9B,yBAAoD,EACpD,MAAuB,EACvB,KAAa;IAEb,IAAI,MAAM,CAAC,EAAE,KAAK,aAAa,EAAE;QAC/B,OAAO;KACR;IAED,GAAG,CAAC,+BAA+B,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,uBAAA,IAAI,0FAAiB,MAArB,IAAI,EAAkB,yBAAyB,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,eAAe,qBAAqB,CAAC,CAAC,CAAC;AACzE,CAAC,qGAGC,yBAAoD,EACpD,aAAqB;IAErB,MAAM,SAAS,GAAG,uBAAA,IAAI,kDAAgB,CAAC,aAAa,CAAC,CAAC;IAEtD,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAC/B,uBAAuB,EACvB,SAAS,CAAC,WAAW,CACtB,CAAC;IACF,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAC/B,oBAAoB,EACpB,SAAS,CAAC,iBAAiB,CAC5B,CAAC;IACF,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAC/B,qBAAqB,EACrB,SAAS,CAAC,iBAAiB,CAC5B,CAAC;IAEF,OAAO,uBAAA,IAAI,kDAAgB,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["import type EthQuery from '@metamask/eth-query';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker';\nimport { projectLogger } from '../logger';\nimport {\n type PublishBatchHook,\n type PublishBatchHookRequest,\n type PublishBatchHookResult,\n type TransactionMeta,\n} from '../types';\n\nconst log = createModuleLogger(projectLogger, 'sequential-publish-batch-hook');\n\ntype SequentialPublishBatchHookOptions = {\n publishTransaction: (\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n ) => Promise<Hex>;\n getTransaction: (id: string) => TransactionMeta;\n getEthQuery: (networkClientId: string) => EthQuery;\n getPendingTransactionTracker: (\n networkClientId: string,\n ) => PendingTransactionTracker;\n};\n\n/**\n * Custom publish logic that also publishes additional sequential transactions in a batch.\n * Requires the batch to be successful to resolve.\n */\nexport class SequentialPublishBatchHook {\n readonly #publishTransaction: (\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n ) => Promise<Hex>;\n\n readonly #getTransaction: (id: string) => TransactionMeta;\n\n readonly #getEthQuery: (networkClientId: string) => EthQuery;\n\n readonly #getPendingTransactionTracker: (\n networkClientId: string,\n ) => PendingTransactionTracker;\n\n #boundListeners: Record<\n string,\n {\n onConfirmed: (txMeta: TransactionMeta) => void;\n onFailedOrDropped: (txMeta: TransactionMeta, error?: Error) => void;\n }\n > = {};\n\n constructor({\n publishTransaction,\n getTransaction,\n getPendingTransactionTracker,\n getEthQuery,\n }: SequentialPublishBatchHookOptions) {\n this.#publishTransaction = publishTransaction;\n this.#getTransaction = getTransaction;\n this.#getEthQuery = getEthQuery;\n this.#getPendingTransactionTracker = getPendingTransactionTracker;\n }\n\n /**\n * @returns The publish batch hook function.\n */\n getHook(): PublishBatchHook {\n return this.#hook.bind(this);\n }\n\n async #hook({\n from,\n networkClientId,\n transactions,\n }: PublishBatchHookRequest): Promise<PublishBatchHookResult> {\n log('Starting sequential publish batch hook', { from, networkClientId });\n\n const pendingTransactionTracker =\n this.#getPendingTransactionTracker(networkClientId);\n const results = [];\n\n for (const transaction of transactions) {\n try {\n const transactionMeta = this.#getTransaction(String(transaction.id));\n\n const transactionHash = await this.#publishTransaction(\n this.#getEthQuery(networkClientId),\n transactionMeta,\n );\n log('Transaction published', { transactionHash });\n\n const transactionUpdated = {\n ...transactionMeta,\n hash: transactionHash,\n };\n\n const confirmationPromise = this.#waitForTransactionEvent(\n pendingTransactionTracker,\n transactionUpdated.id,\n transactionUpdated.hash,\n );\n\n pendingTransactionTracker.addTransactionToPoll(transactionUpdated);\n\n await confirmationPromise;\n results.push({ transactionHash });\n } catch (error) {\n log('Batch transaction failed', { transaction, error });\n pendingTransactionTracker.stop();\n throw rpcErrors.internal(`Failed to publish batch transaction`);\n }\n }\n\n log('Sequential publish batch hook completed', { results });\n pendingTransactionTracker.stop();\n\n return { results };\n }\n\n /**\n * Waits for a transaction event (confirmed, failed, or dropped) and resolves/rejects accordingly.\n *\n * @param pendingTransactionTracker - The tracker instance to subscribe to events.\n * @param transactionId - The transaction ID.\n * @param transactionHash - The hash of the transaction.\n * @returns A promise that resolves when the transaction is confirmed or rejects if it fails or is dropped.\n */\n async #waitForTransactionEvent(\n pendingTransactionTracker: PendingTransactionTracker,\n transactionId: string,\n transactionHash: string,\n ): Promise<TransactionMeta> {\n return new Promise((resolve, reject) => {\n const onConfirmed = this.#onConfirmed.bind(\n this,\n transactionId,\n transactionHash,\n resolve,\n pendingTransactionTracker,\n );\n\n const onFailedOrDropped = this.#onFailedOrDropped.bind(\n this,\n transactionId,\n transactionHash,\n reject,\n pendingTransactionTracker,\n );\n\n this.#boundListeners[transactionId] = {\n onConfirmed,\n onFailedOrDropped,\n };\n\n pendingTransactionTracker.hub.on('transaction-confirmed', onConfirmed);\n pendingTransactionTracker.hub.on('transaction-failed', onFailedOrDropped);\n pendingTransactionTracker.hub.on(\n 'transaction-dropped',\n onFailedOrDropped,\n );\n });\n }\n\n #onConfirmed(\n transactionId: string,\n transactionHash: string,\n resolve: (txMeta: TransactionMeta) => void,\n pendingTransactionTracker: PendingTransactionTracker,\n txMeta: TransactionMeta,\n ): void {\n if (txMeta.id !== transactionId) {\n return;\n }\n\n log('Transaction confirmed', { transactionHash });\n this.#removeListeners(pendingTransactionTracker, transactionId);\n resolve(txMeta);\n }\n\n #onFailedOrDropped(\n transactionId: string,\n transactionHash: string,\n reject: (error: Error) => void,\n pendingTransactionTracker: PendingTransactionTracker,\n txMeta: TransactionMeta,\n error?: Error,\n ): void {\n if (txMeta.id !== transactionId) {\n return;\n }\n\n log('Transaction failed or dropped', { transactionHash, error });\n this.#removeListeners(pendingTransactionTracker, transactionId);\n reject(new Error(`Transaction ${transactionHash} failed or dropped.`));\n }\n\n #removeListeners(\n pendingTransactionTracker: PendingTransactionTracker,\n transactionId: string,\n ): void {\n const listeners = this.#boundListeners[transactionId];\n\n pendingTransactionTracker.hub.off(\n 'transaction-confirmed',\n listeners.onConfirmed,\n );\n pendingTransactionTracker.hub.off(\n 'transaction-failed',\n listeners.onFailedOrDropped,\n );\n pendingTransactionTracker.hub.off(\n 'transaction-dropped',\n listeners.onFailedOrDropped,\n );\n\n delete this.#boundListeners[transactionId];\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import type EthQuery from "@metamask/eth-query";
2
+ import type { Hex } from "@metamask/utils";
3
+ import type { PendingTransactionTracker } from "../helpers/PendingTransactionTracker.cjs";
4
+ import { type PublishBatchHook, type TransactionMeta } from "../types.cjs";
5
+ type SequentialPublishBatchHookOptions = {
6
+ publishTransaction: (ethQuery: EthQuery, transactionMeta: TransactionMeta) => Promise<Hex>;
7
+ getTransaction: (id: string) => TransactionMeta;
8
+ getEthQuery: (networkClientId: string) => EthQuery;
9
+ getPendingTransactionTracker: (networkClientId: string) => PendingTransactionTracker;
10
+ };
11
+ /**
12
+ * Custom publish logic that also publishes additional sequential transactions in a batch.
13
+ * Requires the batch to be successful to resolve.
14
+ */
15
+ export declare class SequentialPublishBatchHook {
16
+ #private;
17
+ constructor({ publishTransaction, getTransaction, getPendingTransactionTracker, getEthQuery, }: SequentialPublishBatchHookOptions);
18
+ /**
19
+ * @returns The publish batch hook function.
20
+ */
21
+ getHook(): PublishBatchHook;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=SequentialPublishBatchHook.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequentialPublishBatchHook.d.cts","sourceRoot":"","sources":["../../src/hooks/SequentialPublishBatchHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,4BAA4B;AAGhD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,iDAA6C;AAEtF,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EACrB,qBAAiB;AAIlB,KAAK,iCAAiC,GAAG;IACvC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,KAC7B,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,eAAe,CAAC;IAChD,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC;IACnD,4BAA4B,EAAE,CAC5B,eAAe,EAAE,MAAM,KACpB,yBAAyB,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA0B;;gBAsBzB,EACV,kBAAkB,EAClB,cAAc,EACd,4BAA4B,EAC5B,WAAW,GACZ,EAAE,iCAAiC;IAOpC;;OAEG;IACH,OAAO,IAAI,gBAAgB;CAuJ5B"}
@@ -0,0 +1,24 @@
1
+ import type EthQuery from "@metamask/eth-query";
2
+ import type { Hex } from "@metamask/utils";
3
+ import type { PendingTransactionTracker } from "../helpers/PendingTransactionTracker.mjs";
4
+ import { type PublishBatchHook, type TransactionMeta } from "../types.mjs";
5
+ type SequentialPublishBatchHookOptions = {
6
+ publishTransaction: (ethQuery: EthQuery, transactionMeta: TransactionMeta) => Promise<Hex>;
7
+ getTransaction: (id: string) => TransactionMeta;
8
+ getEthQuery: (networkClientId: string) => EthQuery;
9
+ getPendingTransactionTracker: (networkClientId: string) => PendingTransactionTracker;
10
+ };
11
+ /**
12
+ * Custom publish logic that also publishes additional sequential transactions in a batch.
13
+ * Requires the batch to be successful to resolve.
14
+ */
15
+ export declare class SequentialPublishBatchHook {
16
+ #private;
17
+ constructor({ publishTransaction, getTransaction, getPendingTransactionTracker, getEthQuery, }: SequentialPublishBatchHookOptions);
18
+ /**
19
+ * @returns The publish batch hook function.
20
+ */
21
+ getHook(): PublishBatchHook;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=SequentialPublishBatchHook.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequentialPublishBatchHook.d.mts","sourceRoot":"","sources":["../../src/hooks/SequentialPublishBatchHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,4BAA4B;AAGhD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,iDAA6C;AAEtF,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EACrB,qBAAiB;AAIlB,KAAK,iCAAiC,GAAG;IACvC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,KAC7B,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,eAAe,CAAC;IAChD,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC;IACnD,4BAA4B,EAAE,CAC5B,eAAe,EAAE,MAAM,KACpB,yBAAyB,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA0B;;gBAsBzB,EACV,kBAAkB,EAClB,cAAc,EACd,4BAA4B,EAC5B,WAAW,GACZ,EAAE,iCAAiC;IAOpC;;OAEG;IACH,OAAO,IAAI,gBAAgB;CAuJ5B"}
@@ -0,0 +1,110 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _SequentialPublishBatchHook_instances, _SequentialPublishBatchHook_publishTransaction, _SequentialPublishBatchHook_getTransaction, _SequentialPublishBatchHook_getEthQuery, _SequentialPublishBatchHook_getPendingTransactionTracker, _SequentialPublishBatchHook_boundListeners, _SequentialPublishBatchHook_hook, _SequentialPublishBatchHook_waitForTransactionEvent, _SequentialPublishBatchHook_onConfirmed, _SequentialPublishBatchHook_onFailedOrDropped, _SequentialPublishBatchHook_removeListeners;
13
+ import { rpcErrors } from "@metamask/rpc-errors";
14
+ import { createModuleLogger } from "@metamask/utils";
15
+ import { projectLogger } from "../logger.mjs";
16
+ const log = createModuleLogger(projectLogger, 'sequential-publish-batch-hook');
17
+ /**
18
+ * Custom publish logic that also publishes additional sequential transactions in a batch.
19
+ * Requires the batch to be successful to resolve.
20
+ */
21
+ export class SequentialPublishBatchHook {
22
+ constructor({ publishTransaction, getTransaction, getPendingTransactionTracker, getEthQuery, }) {
23
+ _SequentialPublishBatchHook_instances.add(this);
24
+ _SequentialPublishBatchHook_publishTransaction.set(this, void 0);
25
+ _SequentialPublishBatchHook_getTransaction.set(this, void 0);
26
+ _SequentialPublishBatchHook_getEthQuery.set(this, void 0);
27
+ _SequentialPublishBatchHook_getPendingTransactionTracker.set(this, void 0);
28
+ _SequentialPublishBatchHook_boundListeners.set(this, {});
29
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_publishTransaction, publishTransaction, "f");
30
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getTransaction, getTransaction, "f");
31
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getEthQuery, getEthQuery, "f");
32
+ __classPrivateFieldSet(this, _SequentialPublishBatchHook_getPendingTransactionTracker, getPendingTransactionTracker, "f");
33
+ }
34
+ /**
35
+ * @returns The publish batch hook function.
36
+ */
37
+ getHook() {
38
+ return __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_hook).bind(this);
39
+ }
40
+ }
41
+ _SequentialPublishBatchHook_publishTransaction = new WeakMap(), _SequentialPublishBatchHook_getTransaction = new WeakMap(), _SequentialPublishBatchHook_getEthQuery = new WeakMap(), _SequentialPublishBatchHook_getPendingTransactionTracker = new WeakMap(), _SequentialPublishBatchHook_boundListeners = new WeakMap(), _SequentialPublishBatchHook_instances = new WeakSet(), _SequentialPublishBatchHook_hook = async function _SequentialPublishBatchHook_hook({ from, networkClientId, transactions, }) {
42
+ log('Starting sequential publish batch hook', { from, networkClientId });
43
+ const pendingTransactionTracker = __classPrivateFieldGet(this, _SequentialPublishBatchHook_getPendingTransactionTracker, "f").call(this, networkClientId);
44
+ const results = [];
45
+ for (const transaction of transactions) {
46
+ try {
47
+ const transactionMeta = __classPrivateFieldGet(this, _SequentialPublishBatchHook_getTransaction, "f").call(this, String(transaction.id));
48
+ const transactionHash = await __classPrivateFieldGet(this, _SequentialPublishBatchHook_publishTransaction, "f").call(this, __classPrivateFieldGet(this, _SequentialPublishBatchHook_getEthQuery, "f").call(this, networkClientId), transactionMeta);
49
+ log('Transaction published', { transactionHash });
50
+ const transactionUpdated = {
51
+ ...transactionMeta,
52
+ hash: transactionHash,
53
+ };
54
+ const confirmationPromise = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_waitForTransactionEvent).call(this, pendingTransactionTracker, transactionUpdated.id, transactionUpdated.hash);
55
+ pendingTransactionTracker.addTransactionToPoll(transactionUpdated);
56
+ await confirmationPromise;
57
+ results.push({ transactionHash });
58
+ }
59
+ catch (error) {
60
+ log('Batch transaction failed', { transaction, error });
61
+ pendingTransactionTracker.stop();
62
+ throw rpcErrors.internal(`Failed to publish batch transaction`);
63
+ }
64
+ }
65
+ log('Sequential publish batch hook completed', { results });
66
+ pendingTransactionTracker.stop();
67
+ return { results };
68
+ }, _SequentialPublishBatchHook_waitForTransactionEvent =
69
+ /**
70
+ * Waits for a transaction event (confirmed, failed, or dropped) and resolves/rejects accordingly.
71
+ *
72
+ * @param pendingTransactionTracker - The tracker instance to subscribe to events.
73
+ * @param transactionId - The transaction ID.
74
+ * @param transactionHash - The hash of the transaction.
75
+ * @returns A promise that resolves when the transaction is confirmed or rejects if it fails or is dropped.
76
+ */
77
+ async function _SequentialPublishBatchHook_waitForTransactionEvent(pendingTransactionTracker, transactionId, transactionHash) {
78
+ return new Promise((resolve, reject) => {
79
+ const onConfirmed = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_onConfirmed).bind(this, transactionId, transactionHash, resolve, pendingTransactionTracker);
80
+ const onFailedOrDropped = __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_onFailedOrDropped).bind(this, transactionId, transactionHash, reject, pendingTransactionTracker);
81
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId] = {
82
+ onConfirmed,
83
+ onFailedOrDropped,
84
+ };
85
+ pendingTransactionTracker.hub.on('transaction-confirmed', onConfirmed);
86
+ pendingTransactionTracker.hub.on('transaction-failed', onFailedOrDropped);
87
+ pendingTransactionTracker.hub.on('transaction-dropped', onFailedOrDropped);
88
+ });
89
+ }, _SequentialPublishBatchHook_onConfirmed = function _SequentialPublishBatchHook_onConfirmed(transactionId, transactionHash, resolve, pendingTransactionTracker, txMeta) {
90
+ if (txMeta.id !== transactionId) {
91
+ return;
92
+ }
93
+ log('Transaction confirmed', { transactionHash });
94
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_removeListeners).call(this, pendingTransactionTracker, transactionId);
95
+ resolve(txMeta);
96
+ }, _SequentialPublishBatchHook_onFailedOrDropped = function _SequentialPublishBatchHook_onFailedOrDropped(transactionId, transactionHash, reject, pendingTransactionTracker, txMeta, error) {
97
+ if (txMeta.id !== transactionId) {
98
+ return;
99
+ }
100
+ log('Transaction failed or dropped', { transactionHash, error });
101
+ __classPrivateFieldGet(this, _SequentialPublishBatchHook_instances, "m", _SequentialPublishBatchHook_removeListeners).call(this, pendingTransactionTracker, transactionId);
102
+ reject(new Error(`Transaction ${transactionHash} failed or dropped.`));
103
+ }, _SequentialPublishBatchHook_removeListeners = function _SequentialPublishBatchHook_removeListeners(pendingTransactionTracker, transactionId) {
104
+ const listeners = __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId];
105
+ pendingTransactionTracker.hub.off('transaction-confirmed', listeners.onConfirmed);
106
+ pendingTransactionTracker.hub.off('transaction-failed', listeners.onFailedOrDropped);
107
+ pendingTransactionTracker.hub.off('transaction-dropped', listeners.onFailedOrDropped);
108
+ delete __classPrivateFieldGet(this, _SequentialPublishBatchHook_boundListeners, "f")[transactionId];
109
+ };
110
+ //# sourceMappingURL=SequentialPublishBatchHook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequentialPublishBatchHook.mjs","sourceRoot":"","sources":["../../src/hooks/SequentialPublishBatchHook.ts"],"names":[],"mappings":"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","sourcesContent":["import type EthQuery from '@metamask/eth-query';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker';\nimport { projectLogger } from '../logger';\nimport {\n type PublishBatchHook,\n type PublishBatchHookRequest,\n type PublishBatchHookResult,\n type TransactionMeta,\n} from '../types';\n\nconst log = createModuleLogger(projectLogger, 'sequential-publish-batch-hook');\n\ntype SequentialPublishBatchHookOptions = {\n publishTransaction: (\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n ) => Promise<Hex>;\n getTransaction: (id: string) => TransactionMeta;\n getEthQuery: (networkClientId: string) => EthQuery;\n getPendingTransactionTracker: (\n networkClientId: string,\n ) => PendingTransactionTracker;\n};\n\n/**\n * Custom publish logic that also publishes additional sequential transactions in a batch.\n * Requires the batch to be successful to resolve.\n */\nexport class SequentialPublishBatchHook {\n readonly #publishTransaction: (\n ethQuery: EthQuery,\n transactionMeta: TransactionMeta,\n ) => Promise<Hex>;\n\n readonly #getTransaction: (id: string) => TransactionMeta;\n\n readonly #getEthQuery: (networkClientId: string) => EthQuery;\n\n readonly #getPendingTransactionTracker: (\n networkClientId: string,\n ) => PendingTransactionTracker;\n\n #boundListeners: Record<\n string,\n {\n onConfirmed: (txMeta: TransactionMeta) => void;\n onFailedOrDropped: (txMeta: TransactionMeta, error?: Error) => void;\n }\n > = {};\n\n constructor({\n publishTransaction,\n getTransaction,\n getPendingTransactionTracker,\n getEthQuery,\n }: SequentialPublishBatchHookOptions) {\n this.#publishTransaction = publishTransaction;\n this.#getTransaction = getTransaction;\n this.#getEthQuery = getEthQuery;\n this.#getPendingTransactionTracker = getPendingTransactionTracker;\n }\n\n /**\n * @returns The publish batch hook function.\n */\n getHook(): PublishBatchHook {\n return this.#hook.bind(this);\n }\n\n async #hook({\n from,\n networkClientId,\n transactions,\n }: PublishBatchHookRequest): Promise<PublishBatchHookResult> {\n log('Starting sequential publish batch hook', { from, networkClientId });\n\n const pendingTransactionTracker =\n this.#getPendingTransactionTracker(networkClientId);\n const results = [];\n\n for (const transaction of transactions) {\n try {\n const transactionMeta = this.#getTransaction(String(transaction.id));\n\n const transactionHash = await this.#publishTransaction(\n this.#getEthQuery(networkClientId),\n transactionMeta,\n );\n log('Transaction published', { transactionHash });\n\n const transactionUpdated = {\n ...transactionMeta,\n hash: transactionHash,\n };\n\n const confirmationPromise = this.#waitForTransactionEvent(\n pendingTransactionTracker,\n transactionUpdated.id,\n transactionUpdated.hash,\n );\n\n pendingTransactionTracker.addTransactionToPoll(transactionUpdated);\n\n await confirmationPromise;\n results.push({ transactionHash });\n } catch (error) {\n log('Batch transaction failed', { transaction, error });\n pendingTransactionTracker.stop();\n throw rpcErrors.internal(`Failed to publish batch transaction`);\n }\n }\n\n log('Sequential publish batch hook completed', { results });\n pendingTransactionTracker.stop();\n\n return { results };\n }\n\n /**\n * Waits for a transaction event (confirmed, failed, or dropped) and resolves/rejects accordingly.\n *\n * @param pendingTransactionTracker - The tracker instance to subscribe to events.\n * @param transactionId - The transaction ID.\n * @param transactionHash - The hash of the transaction.\n * @returns A promise that resolves when the transaction is confirmed or rejects if it fails or is dropped.\n */\n async #waitForTransactionEvent(\n pendingTransactionTracker: PendingTransactionTracker,\n transactionId: string,\n transactionHash: string,\n ): Promise<TransactionMeta> {\n return new Promise((resolve, reject) => {\n const onConfirmed = this.#onConfirmed.bind(\n this,\n transactionId,\n transactionHash,\n resolve,\n pendingTransactionTracker,\n );\n\n const onFailedOrDropped = this.#onFailedOrDropped.bind(\n this,\n transactionId,\n transactionHash,\n reject,\n pendingTransactionTracker,\n );\n\n this.#boundListeners[transactionId] = {\n onConfirmed,\n onFailedOrDropped,\n };\n\n pendingTransactionTracker.hub.on('transaction-confirmed', onConfirmed);\n pendingTransactionTracker.hub.on('transaction-failed', onFailedOrDropped);\n pendingTransactionTracker.hub.on(\n 'transaction-dropped',\n onFailedOrDropped,\n );\n });\n }\n\n #onConfirmed(\n transactionId: string,\n transactionHash: string,\n resolve: (txMeta: TransactionMeta) => void,\n pendingTransactionTracker: PendingTransactionTracker,\n txMeta: TransactionMeta,\n ): void {\n if (txMeta.id !== transactionId) {\n return;\n }\n\n log('Transaction confirmed', { transactionHash });\n this.#removeListeners(pendingTransactionTracker, transactionId);\n resolve(txMeta);\n }\n\n #onFailedOrDropped(\n transactionId: string,\n transactionHash: string,\n reject: (error: Error) => void,\n pendingTransactionTracker: PendingTransactionTracker,\n txMeta: TransactionMeta,\n error?: Error,\n ): void {\n if (txMeta.id !== transactionId) {\n return;\n }\n\n log('Transaction failed or dropped', { transactionHash, error });\n this.#removeListeners(pendingTransactionTracker, transactionId);\n reject(new Error(`Transaction ${transactionHash} failed or dropped.`));\n }\n\n #removeListeners(\n pendingTransactionTracker: PendingTransactionTracker,\n transactionId: string,\n ): void {\n const listeners = this.#boundListeners[transactionId];\n\n pendingTransactionTracker.hub.off(\n 'transaction-confirmed',\n listeners.onConfirmed,\n );\n pendingTransactionTracker.hub.off(\n 'transaction-failed',\n listeners.onFailedOrDropped,\n );\n pendingTransactionTracker.hub.off(\n 'transaction-dropped',\n listeners.onFailedOrDropped,\n );\n\n delete this.#boundListeners[transactionId];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA2BA,qEAIiC;AAH/B,oHAAA,WAAW,OAAA;AACX,sHAAA,aAAa,OAAA;AACb,8HAAA,qBAAqB,OAAA;AAgDvB,qCAUiB;AATf,4GAAA,mBAAmB,OAAA;AACnB,2GAAA,kBAAkB,OAAA;AAClB,4GAAA,mBAAmB,OAAA;AACnB,gHAAA,uBAAuB,OAAA;AACvB,gHAAA,uBAAuB,OAAA;AACvB,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AAEd,+CAGyB;AAFvB,8HAAA,mCAAmC,OAAA;AACnC,yHAAA,8BAA8B,OAAA;AAEhC,iEAAoE;AAA3D,4HAAA,wBAAwB,OAAA;AACjC,iDAAwD;AAA/C,gHAAA,oBAAoB,OAAA;AAC7B,2CAGuB;AAFrB,6GAAA,oBAAoB,OAAA;AACpB,mHAAA,0BAA0B,OAAA;AAE5B,6CAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,uGAAgI;AAAvH,+JAAA,mBAAmB,OAA6C;AACzE,+CAA2C;AAAlC,mGAAA,QAAQ,OAAA","sourcesContent":["export type {\n MethodData,\n Result,\n TransactionControllerActions,\n TransactionControllerEvents,\n TransactionControllerGetStateAction,\n TransactionControllerIncomingTransactionsReceivedEvent,\n TransactionControllerPostTransactionBalanceUpdatedEvent,\n TransactionControllerSpeedupTransactionAddedEvent,\n TransactionControllerState,\n TransactionControllerStateChangeEvent,\n TransactionControllerTransactionApprovedEvent,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionDroppedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionControllerTransactionFinishedEvent,\n TransactionControllerTransactionNewSwapApprovalEvent,\n TransactionControllerTransactionNewSwapEvent,\n TransactionControllerTransactionPublishingSkipped,\n TransactionControllerTransactionRejectedEvent,\n TransactionControllerTransactionStatusUpdatedEvent,\n TransactionControllerTransactionSubmittedEvent,\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionControllerUpdateCustodialTransactionAction,\n TransactionControllerMessenger,\n TransactionControllerOptions,\n} from './TransactionController';\nexport {\n CANCEL_RATE,\n SPEED_UP_RATE,\n TransactionController,\n} from './TransactionController';\nexport type {\n AfterAddHook,\n Authorization,\n AuthorizationList,\n BatchTransactionParams,\n DappSuggestedGasFees,\n DefaultGasEstimates,\n FeeMarketEIP1559Values,\n FeeMarketGasFeeEstimateForLevel,\n FeeMarketGasFeeEstimates,\n GasFeeEstimates,\n GasFeeToken,\n GasPriceGasFeeEstimates,\n GasPriceValue,\n InferTransactionTypeResult,\n IsAtomicBatchSupportedRequest,\n IsAtomicBatchSupportedResult,\n IsAtomicBatchSupportedResultEntry,\n LegacyGasFeeEstimates,\n Log,\n NestedTransactionMetadata,\n PublishBatchHook,\n PublishBatchHookRequest,\n PublishBatchHookResult,\n PublishBatchHookTransaction,\n PublishHook,\n PublishHookResult,\n SavedGasFees,\n SecurityAlertResponse,\n SecurityProviderRequest,\n SendFlowHistoryEntry,\n SimulationBalanceChange,\n SimulationData,\n SimulationError,\n SimulationToken,\n SimulationTokenBalanceChange,\n TransactionBatchRequest,\n TransactionBatchResult,\n TransactionError,\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n TransactionParams,\n TransactionReceipt,\n ValidateSecurityRequest,\n} from './types';\nexport {\n GasFeeEstimateLevel,\n GasFeeEstimateType,\n SimulationErrorCode,\n SimulationTokenStandard,\n TransactionEnvelopeType,\n TransactionStatus,\n TransactionType,\n UserFeeLevel,\n WalletDevice,\n} from './types';\nexport {\n DISPLAYED_TRANSACTION_HISTORY_PATHS,\n MAX_TRANSACTION_HISTORY_LENGTH,\n} from './utils/history';\nexport { determineTransactionType } from './utils/transaction-type';\nexport { mergeGasFeeEstimates } from './utils/gas-flow';\nexport {\n isEIP1559Transaction,\n normalizeTransactionParams,\n} from './utils/utils';\nexport { CHAIN_IDS } from './constants';\nexport { SUPPORTED_CHAIN_IDS as INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS } from './helpers/AccountsApiRemoteTransactionSource';\nexport { HARDFORK } from './utils/prepare';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA2BA,qEAIiC;AAH/B,oHAAA,WAAW,OAAA;AACX,sHAAA,aAAa,OAAA;AACb,8HAAA,qBAAqB,OAAA;AAiDvB,qCAUiB;AATf,4GAAA,mBAAmB,OAAA;AACnB,2GAAA,kBAAkB,OAAA;AAClB,4GAAA,mBAAmB,OAAA;AACnB,gHAAA,uBAAuB,OAAA;AACvB,gHAAA,uBAAuB,OAAA;AACvB,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AAEd,+CAGyB;AAFvB,8HAAA,mCAAmC,OAAA;AACnC,yHAAA,8BAA8B,OAAA;AAEhC,iEAAoE;AAA3D,4HAAA,wBAAwB,OAAA;AACjC,iDAAwD;AAA/C,gHAAA,oBAAoB,OAAA;AAC7B,2CAGuB;AAFrB,6GAAA,oBAAoB,OAAA;AACpB,mHAAA,0BAA0B,OAAA;AAE5B,6CAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,uGAAgI;AAAvH,+JAAA,mBAAmB,OAA6C;AACzE,+CAA2C;AAAlC,mGAAA,QAAQ,OAAA","sourcesContent":["export type {\n MethodData,\n Result,\n TransactionControllerActions,\n TransactionControllerEvents,\n TransactionControllerGetStateAction,\n TransactionControllerIncomingTransactionsReceivedEvent,\n TransactionControllerPostTransactionBalanceUpdatedEvent,\n TransactionControllerSpeedupTransactionAddedEvent,\n TransactionControllerState,\n TransactionControllerStateChangeEvent,\n TransactionControllerTransactionApprovedEvent,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionDroppedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionControllerTransactionFinishedEvent,\n TransactionControllerTransactionNewSwapApprovalEvent,\n TransactionControllerTransactionNewSwapEvent,\n TransactionControllerTransactionPublishingSkipped,\n TransactionControllerTransactionRejectedEvent,\n TransactionControllerTransactionStatusUpdatedEvent,\n TransactionControllerTransactionSubmittedEvent,\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionControllerUpdateCustodialTransactionAction,\n TransactionControllerMessenger,\n TransactionControllerOptions,\n} from './TransactionController';\nexport {\n CANCEL_RATE,\n SPEED_UP_RATE,\n TransactionController,\n} from './TransactionController';\nexport type {\n AfterAddHook,\n Authorization,\n AuthorizationList,\n BatchTransactionParams,\n DappSuggestedGasFees,\n DefaultGasEstimates,\n FeeMarketEIP1559Values,\n FeeMarketGasFeeEstimateForLevel,\n FeeMarketGasFeeEstimates,\n GasFeeEstimates,\n GasFeeToken,\n GasPriceGasFeeEstimates,\n GasPriceValue,\n InferTransactionTypeResult,\n IsAtomicBatchSupportedRequest,\n IsAtomicBatchSupportedResult,\n IsAtomicBatchSupportedResultEntry,\n LegacyGasFeeEstimates,\n Log,\n NestedTransactionMetadata,\n PublishBatchHook,\n PublishBatchHookRequest,\n PublishBatchHookResult,\n PublishBatchHookTransaction,\n PublishHook,\n PublishHookResult,\n SavedGasFees,\n SecurityAlertResponse,\n SecurityProviderRequest,\n SendFlowHistoryEntry,\n SimulationBalanceChange,\n SimulationData,\n SimulationError,\n SimulationToken,\n SimulationTokenBalanceChange,\n TransactionBatchMeta,\n TransactionBatchRequest,\n TransactionBatchResult,\n TransactionError,\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n TransactionParams,\n TransactionReceipt,\n ValidateSecurityRequest,\n} from './types';\nexport {\n GasFeeEstimateLevel,\n GasFeeEstimateType,\n SimulationErrorCode,\n SimulationTokenStandard,\n TransactionEnvelopeType,\n TransactionStatus,\n TransactionType,\n UserFeeLevel,\n WalletDevice,\n} from './types';\nexport {\n DISPLAYED_TRANSACTION_HISTORY_PATHS,\n MAX_TRANSACTION_HISTORY_LENGTH,\n} from './utils/history';\nexport { determineTransactionType } from './utils/transaction-type';\nexport { mergeGasFeeEstimates } from './utils/gas-flow';\nexport {\n isEIP1559Transaction,\n normalizeTransactionParams,\n} from './utils/utils';\nexport { CHAIN_IDS } from './constants';\nexport { SUPPORTED_CHAIN_IDS as INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS } from './helpers/AccountsApiRemoteTransactionSource';\nexport { HARDFORK } from './utils/prepare';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { MethodData, Result, TransactionControllerActions, TransactionControllerEvents, TransactionControllerGetStateAction, TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerPostTransactionBalanceUpdatedEvent, TransactionControllerSpeedupTransactionAddedEvent, TransactionControllerState, TransactionControllerStateChangeEvent, TransactionControllerTransactionApprovedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerTransactionDroppedEvent, TransactionControllerTransactionFailedEvent, TransactionControllerTransactionFinishedEvent, TransactionControllerTransactionNewSwapApprovalEvent, TransactionControllerTransactionNewSwapEvent, TransactionControllerTransactionPublishingSkipped, TransactionControllerTransactionRejectedEvent, TransactionControllerTransactionStatusUpdatedEvent, TransactionControllerTransactionSubmittedEvent, TransactionControllerUnapprovedTransactionAddedEvent, TransactionControllerUpdateCustodialTransactionAction, TransactionControllerMessenger, TransactionControllerOptions, } from "./TransactionController.cjs";
2
2
  export { CANCEL_RATE, SPEED_UP_RATE, TransactionController, } from "./TransactionController.cjs";
3
- export type { AfterAddHook, Authorization, AuthorizationList, BatchTransactionParams, DappSuggestedGasFees, DefaultGasEstimates, FeeMarketEIP1559Values, FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, GasFeeEstimates, GasFeeToken, GasPriceGasFeeEstimates, GasPriceValue, InferTransactionTypeResult, IsAtomicBatchSupportedRequest, IsAtomicBatchSupportedResult, IsAtomicBatchSupportedResultEntry, LegacyGasFeeEstimates, Log, NestedTransactionMetadata, PublishBatchHook, PublishBatchHookRequest, PublishBatchHookResult, PublishBatchHookTransaction, PublishHook, PublishHookResult, SavedGasFees, SecurityAlertResponse, SecurityProviderRequest, SendFlowHistoryEntry, SimulationBalanceChange, SimulationData, SimulationError, SimulationToken, SimulationTokenBalanceChange, TransactionBatchRequest, TransactionBatchResult, TransactionError, TransactionHistory, TransactionHistoryEntry, TransactionMeta, TransactionParams, TransactionReceipt, ValidateSecurityRequest, } from "./types.cjs";
3
+ export type { AfterAddHook, Authorization, AuthorizationList, BatchTransactionParams, DappSuggestedGasFees, DefaultGasEstimates, FeeMarketEIP1559Values, FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, GasFeeEstimates, GasFeeToken, GasPriceGasFeeEstimates, GasPriceValue, InferTransactionTypeResult, IsAtomicBatchSupportedRequest, IsAtomicBatchSupportedResult, IsAtomicBatchSupportedResultEntry, LegacyGasFeeEstimates, Log, NestedTransactionMetadata, PublishBatchHook, PublishBatchHookRequest, PublishBatchHookResult, PublishBatchHookTransaction, PublishHook, PublishHookResult, SavedGasFees, SecurityAlertResponse, SecurityProviderRequest, SendFlowHistoryEntry, SimulationBalanceChange, SimulationData, SimulationError, SimulationToken, SimulationTokenBalanceChange, TransactionBatchMeta, TransactionBatchRequest, TransactionBatchResult, TransactionError, TransactionHistory, TransactionHistoryEntry, TransactionMeta, TransactionParams, TransactionReceipt, ValidateSecurityRequest, } from "./types.cjs";
4
4
  export { GasFeeEstimateLevel, GasFeeEstimateType, SimulationErrorCode, SimulationTokenStandard, TransactionEnvelopeType, TransactionStatus, TransactionType, UserFeeLevel, WalletDevice, } from "./types.cjs";
5
5
  export { DISPLAYED_TRANSACTION_HISTORY_PATHS, MAX_TRANSACTION_HISTORY_LENGTH, } from "./utils/history.cjs";
6
6
  export { determineTransactionType } from "./utils/transaction-type.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,sDAAsD,EACtD,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,qDAAqD,EACrD,8BAA8B,EAC9B,4BAA4B,GAC7B,oCAAgC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,oCAAgC;AACjC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,qBAAqB,EACrB,GAAG,EACH,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAgB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,GAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,sDAAsD,EACtD,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,qDAAqD,EACrD,8BAA8B,EAC9B,4BAA4B,GAC7B,oCAAgC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,oCAAgC;AACjC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,qBAAqB,EACrB,GAAG,EACH,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAgB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,GAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { MethodData, Result, TransactionControllerActions, TransactionControllerEvents, TransactionControllerGetStateAction, TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerPostTransactionBalanceUpdatedEvent, TransactionControllerSpeedupTransactionAddedEvent, TransactionControllerState, TransactionControllerStateChangeEvent, TransactionControllerTransactionApprovedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerTransactionDroppedEvent, TransactionControllerTransactionFailedEvent, TransactionControllerTransactionFinishedEvent, TransactionControllerTransactionNewSwapApprovalEvent, TransactionControllerTransactionNewSwapEvent, TransactionControllerTransactionPublishingSkipped, TransactionControllerTransactionRejectedEvent, TransactionControllerTransactionStatusUpdatedEvent, TransactionControllerTransactionSubmittedEvent, TransactionControllerUnapprovedTransactionAddedEvent, TransactionControllerUpdateCustodialTransactionAction, TransactionControllerMessenger, TransactionControllerOptions, } from "./TransactionController.mjs";
2
2
  export { CANCEL_RATE, SPEED_UP_RATE, TransactionController, } from "./TransactionController.mjs";
3
- export type { AfterAddHook, Authorization, AuthorizationList, BatchTransactionParams, DappSuggestedGasFees, DefaultGasEstimates, FeeMarketEIP1559Values, FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, GasFeeEstimates, GasFeeToken, GasPriceGasFeeEstimates, GasPriceValue, InferTransactionTypeResult, IsAtomicBatchSupportedRequest, IsAtomicBatchSupportedResult, IsAtomicBatchSupportedResultEntry, LegacyGasFeeEstimates, Log, NestedTransactionMetadata, PublishBatchHook, PublishBatchHookRequest, PublishBatchHookResult, PublishBatchHookTransaction, PublishHook, PublishHookResult, SavedGasFees, SecurityAlertResponse, SecurityProviderRequest, SendFlowHistoryEntry, SimulationBalanceChange, SimulationData, SimulationError, SimulationToken, SimulationTokenBalanceChange, TransactionBatchRequest, TransactionBatchResult, TransactionError, TransactionHistory, TransactionHistoryEntry, TransactionMeta, TransactionParams, TransactionReceipt, ValidateSecurityRequest, } from "./types.mjs";
3
+ export type { AfterAddHook, Authorization, AuthorizationList, BatchTransactionParams, DappSuggestedGasFees, DefaultGasEstimates, FeeMarketEIP1559Values, FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, GasFeeEstimates, GasFeeToken, GasPriceGasFeeEstimates, GasPriceValue, InferTransactionTypeResult, IsAtomicBatchSupportedRequest, IsAtomicBatchSupportedResult, IsAtomicBatchSupportedResultEntry, LegacyGasFeeEstimates, Log, NestedTransactionMetadata, PublishBatchHook, PublishBatchHookRequest, PublishBatchHookResult, PublishBatchHookTransaction, PublishHook, PublishHookResult, SavedGasFees, SecurityAlertResponse, SecurityProviderRequest, SendFlowHistoryEntry, SimulationBalanceChange, SimulationData, SimulationError, SimulationToken, SimulationTokenBalanceChange, TransactionBatchMeta, TransactionBatchRequest, TransactionBatchResult, TransactionError, TransactionHistory, TransactionHistoryEntry, TransactionMeta, TransactionParams, TransactionReceipt, ValidateSecurityRequest, } from "./types.mjs";
4
4
  export { GasFeeEstimateLevel, GasFeeEstimateType, SimulationErrorCode, SimulationTokenStandard, TransactionEnvelopeType, TransactionStatus, TransactionType, UserFeeLevel, WalletDevice, } from "./types.mjs";
5
5
  export { DISPLAYED_TRANSACTION_HISTORY_PATHS, MAX_TRANSACTION_HISTORY_LENGTH, } from "./utils/history.mjs";
6
6
  export { determineTransactionType } from "./utils/transaction-type.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,sDAAsD,EACtD,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,qDAAqD,EACrD,8BAA8B,EAC9B,4BAA4B,GAC7B,oCAAgC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,oCAAgC;AACjC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,qBAAqB,EACrB,GAAG,EACH,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAgB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,GAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,sDAAsD,EACtD,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,qDAAqD,EACrD,8BAA8B,EAC9B,4BAA4B,GAC7B,oCAAgC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,oCAAgC;AACjC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,qBAAqB,EACrB,GAAG,EACH,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAgB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,GAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACtB,oCAAgC;AA+CjC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,EAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB","sourcesContent":["export type {\n MethodData,\n Result,\n TransactionControllerActions,\n TransactionControllerEvents,\n TransactionControllerGetStateAction,\n TransactionControllerIncomingTransactionsReceivedEvent,\n TransactionControllerPostTransactionBalanceUpdatedEvent,\n TransactionControllerSpeedupTransactionAddedEvent,\n TransactionControllerState,\n TransactionControllerStateChangeEvent,\n TransactionControllerTransactionApprovedEvent,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionDroppedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionControllerTransactionFinishedEvent,\n TransactionControllerTransactionNewSwapApprovalEvent,\n TransactionControllerTransactionNewSwapEvent,\n TransactionControllerTransactionPublishingSkipped,\n TransactionControllerTransactionRejectedEvent,\n TransactionControllerTransactionStatusUpdatedEvent,\n TransactionControllerTransactionSubmittedEvent,\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionControllerUpdateCustodialTransactionAction,\n TransactionControllerMessenger,\n TransactionControllerOptions,\n} from './TransactionController';\nexport {\n CANCEL_RATE,\n SPEED_UP_RATE,\n TransactionController,\n} from './TransactionController';\nexport type {\n AfterAddHook,\n Authorization,\n AuthorizationList,\n BatchTransactionParams,\n DappSuggestedGasFees,\n DefaultGasEstimates,\n FeeMarketEIP1559Values,\n FeeMarketGasFeeEstimateForLevel,\n FeeMarketGasFeeEstimates,\n GasFeeEstimates,\n GasFeeToken,\n GasPriceGasFeeEstimates,\n GasPriceValue,\n InferTransactionTypeResult,\n IsAtomicBatchSupportedRequest,\n IsAtomicBatchSupportedResult,\n IsAtomicBatchSupportedResultEntry,\n LegacyGasFeeEstimates,\n Log,\n NestedTransactionMetadata,\n PublishBatchHook,\n PublishBatchHookRequest,\n PublishBatchHookResult,\n PublishBatchHookTransaction,\n PublishHook,\n PublishHookResult,\n SavedGasFees,\n SecurityAlertResponse,\n SecurityProviderRequest,\n SendFlowHistoryEntry,\n SimulationBalanceChange,\n SimulationData,\n SimulationError,\n SimulationToken,\n SimulationTokenBalanceChange,\n TransactionBatchRequest,\n TransactionBatchResult,\n TransactionError,\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n TransactionParams,\n TransactionReceipt,\n ValidateSecurityRequest,\n} from './types';\nexport {\n GasFeeEstimateLevel,\n GasFeeEstimateType,\n SimulationErrorCode,\n SimulationTokenStandard,\n TransactionEnvelopeType,\n TransactionStatus,\n TransactionType,\n UserFeeLevel,\n WalletDevice,\n} from './types';\nexport {\n DISPLAYED_TRANSACTION_HISTORY_PATHS,\n MAX_TRANSACTION_HISTORY_LENGTH,\n} from './utils/history';\nexport { determineTransactionType } from './utils/transaction-type';\nexport { mergeGasFeeEstimates } from './utils/gas-flow';\nexport {\n isEIP1559Transaction,\n normalizeTransactionParams,\n} from './utils/utils';\nexport { CHAIN_IDS } from './constants';\nexport { SUPPORTED_CHAIN_IDS as INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS } from './helpers/AccountsApiRemoteTransactionSource';\nexport { HARDFORK } from './utils/prepare';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACtB,oCAAgC;AAgDjC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACb,oBAAgB;AACjB,OAAO,EACL,mCAAmC,EACnC,8BAA8B,EAC/B,4BAAwB;AACzB,OAAO,EAAE,wBAAwB,EAAE,qCAAiC;AACpE,OAAO,EAAE,oBAAoB,EAAE,6BAAyB;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC3B,0BAAsB;AACvB,OAAO,EAAE,SAAS,EAAE,wBAAoB;AACxC,OAAO,EAAE,mBAAmB,IAAI,yCAAyC,EAAE,yDAAqD;AAChI,OAAO,EAAE,QAAQ,EAAE,4BAAwB","sourcesContent":["export type {\n MethodData,\n Result,\n TransactionControllerActions,\n TransactionControllerEvents,\n TransactionControllerGetStateAction,\n TransactionControllerIncomingTransactionsReceivedEvent,\n TransactionControllerPostTransactionBalanceUpdatedEvent,\n TransactionControllerSpeedupTransactionAddedEvent,\n TransactionControllerState,\n TransactionControllerStateChangeEvent,\n TransactionControllerTransactionApprovedEvent,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionDroppedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionControllerTransactionFinishedEvent,\n TransactionControllerTransactionNewSwapApprovalEvent,\n TransactionControllerTransactionNewSwapEvent,\n TransactionControllerTransactionPublishingSkipped,\n TransactionControllerTransactionRejectedEvent,\n TransactionControllerTransactionStatusUpdatedEvent,\n TransactionControllerTransactionSubmittedEvent,\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionControllerUpdateCustodialTransactionAction,\n TransactionControllerMessenger,\n TransactionControllerOptions,\n} from './TransactionController';\nexport {\n CANCEL_RATE,\n SPEED_UP_RATE,\n TransactionController,\n} from './TransactionController';\nexport type {\n AfterAddHook,\n Authorization,\n AuthorizationList,\n BatchTransactionParams,\n DappSuggestedGasFees,\n DefaultGasEstimates,\n FeeMarketEIP1559Values,\n FeeMarketGasFeeEstimateForLevel,\n FeeMarketGasFeeEstimates,\n GasFeeEstimates,\n GasFeeToken,\n GasPriceGasFeeEstimates,\n GasPriceValue,\n InferTransactionTypeResult,\n IsAtomicBatchSupportedRequest,\n IsAtomicBatchSupportedResult,\n IsAtomicBatchSupportedResultEntry,\n LegacyGasFeeEstimates,\n Log,\n NestedTransactionMetadata,\n PublishBatchHook,\n PublishBatchHookRequest,\n PublishBatchHookResult,\n PublishBatchHookTransaction,\n PublishHook,\n PublishHookResult,\n SavedGasFees,\n SecurityAlertResponse,\n SecurityProviderRequest,\n SendFlowHistoryEntry,\n SimulationBalanceChange,\n SimulationData,\n SimulationError,\n SimulationToken,\n SimulationTokenBalanceChange,\n TransactionBatchMeta,\n TransactionBatchRequest,\n TransactionBatchResult,\n TransactionError,\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n TransactionParams,\n TransactionReceipt,\n ValidateSecurityRequest,\n} from './types';\nexport {\n GasFeeEstimateLevel,\n GasFeeEstimateType,\n SimulationErrorCode,\n SimulationTokenStandard,\n TransactionEnvelopeType,\n TransactionStatus,\n TransactionType,\n UserFeeLevel,\n WalletDevice,\n} from './types';\nexport {\n DISPLAYED_TRANSACTION_HISTORY_PATHS,\n MAX_TRANSACTION_HISTORY_LENGTH,\n} from './utils/history';\nexport { determineTransactionType } from './utils/transaction-type';\nexport { mergeGasFeeEstimates } from './utils/gas-flow';\nexport {\n isEIP1559Transaction,\n normalizeTransactionParams,\n} from './utils/utils';\nexport { CHAIN_IDS } from './constants';\nexport { SUPPORTED_CHAIN_IDS as INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS } from './helpers/AccountsApiRemoteTransactionSource';\nexport { HARDFORK } from './utils/prepare';\n"]}