@pimlico/alto 0.0.0-main.20250203T212650 → 0.0.0-main.20250205T142138
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/esm/cli/config/bundler.d.ts +0 -6
- package/esm/cli/config/bundler.js +0 -1
- package/esm/cli/config/bundler.js.map +1 -1
- package/esm/cli/config/options.js +0 -6
- package/esm/cli/config/options.js.map +1 -1
- package/esm/cli/setupServer.js +5 -5
- package/esm/cli/setupServer.js.map +1 -1
- package/esm/executor/executor.d.ts +34 -44
- package/esm/executor/executor.js +103 -463
- package/esm/executor/executor.js.map +1 -1
- package/esm/executor/executorManager.d.ts +20 -10
- package/esm/executor/executorManager.js +371 -310
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/executor/filterOpsAndEStimateGas.d.ts +28 -0
- package/esm/executor/filterOpsAndEStimateGas.js +191 -0
- package/esm/executor/filterOpsAndEStimateGas.js.map +1 -0
- package/esm/executor/senderManager.d.ts +2 -0
- package/esm/executor/senderManager.js +32 -0
- package/esm/executor/senderManager.js.map +1 -1
- package/esm/executor/utils.d.ts +21 -20
- package/esm/executor/utils.js +46 -185
- package/esm/executor/utils.js.map +1 -1
- package/esm/handlers/eventManager.d.ts +4 -1
- package/esm/handlers/eventManager.js +10 -8
- package/esm/handlers/eventManager.js.map +1 -1
- package/esm/mempool/mempool.d.ts +15 -11
- package/esm/mempool/mempool.js +207 -176
- package/esm/mempool/mempool.js.map +1 -1
- package/esm/mempool/store.d.ts +7 -7
- package/esm/mempool/store.js +13 -12
- package/esm/mempool/store.js.map +1 -1
- package/esm/rpc/nonceQueuer.js +2 -2
- package/esm/rpc/nonceQueuer.js.map +1 -1
- package/esm/rpc/rpcHandler.js +27 -31
- package/esm/rpc/rpcHandler.js.map +1 -1
- package/esm/types/mempool.d.ts +40 -41
- package/esm/types/mempool.js.map +1 -1
- package/esm/types/schemas.d.ts +0 -4
- package/esm/types/schemas.js.map +1 -1
- package/esm/utils/userop.d.ts +8 -3
- package/esm/utils/userop.js +5 -3
- package/esm/utils/userop.js.map +1 -1
- package/lib/cli/config/bundler.d.ts +0 -6
- package/lib/cli/config/bundler.js +0 -1
- package/lib/cli/config/bundler.js.map +1 -1
- package/lib/cli/config/options.js +0 -6
- package/lib/cli/config/options.js.map +1 -1
- package/lib/cli/setupServer.js +5 -5
- package/lib/cli/setupServer.js.map +1 -1
- package/lib/executor/executor.d.ts +34 -44
- package/lib/executor/executor.js +100 -460
- package/lib/executor/executor.js.map +1 -1
- package/lib/executor/executorManager.d.ts +20 -10
- package/lib/executor/executorManager.js +370 -309
- package/lib/executor/executorManager.js.map +1 -1
- package/lib/executor/filterOpsAndEStimateGas.d.ts +28 -0
- package/lib/executor/filterOpsAndEStimateGas.js +218 -0
- package/lib/executor/filterOpsAndEStimateGas.js.map +1 -0
- package/lib/executor/senderManager.d.ts +2 -0
- package/lib/executor/senderManager.js +32 -0
- package/lib/executor/senderManager.js.map +1 -1
- package/lib/executor/utils.d.ts +21 -20
- package/lib/executor/utils.js +49 -186
- package/lib/executor/utils.js.map +1 -1
- package/lib/handlers/eventManager.d.ts +4 -1
- package/lib/handlers/eventManager.js +10 -8
- package/lib/handlers/eventManager.js.map +1 -1
- package/lib/mempool/mempool.d.ts +15 -11
- package/lib/mempool/mempool.js +206 -175
- package/lib/mempool/mempool.js.map +1 -1
- package/lib/mempool/store.d.ts +7 -7
- package/lib/mempool/store.js +13 -12
- package/lib/mempool/store.js.map +1 -1
- package/lib/rpc/nonceQueuer.js +1 -1
- package/lib/rpc/nonceQueuer.js.map +1 -1
- package/lib/rpc/rpcHandler.js +26 -30
- package/lib/rpc/rpcHandler.js.map +1 -1
- package/lib/types/mempool.d.ts +40 -41
- package/lib/types/mempool.js.map +1 -1
- package/lib/types/schemas.d.ts +0 -4
- package/lib/types/schemas.js.map +1 -1
- package/lib/utils/userop.d.ts +8 -3
- package/lib/utils/userop.js +7 -5
- package/lib/utils/userop.js.map +1 -1
- package/package.json +1 -1
- package/esm/executor/types.d.ts +0 -25
- package/esm/executor/types.js +0 -2
- package/esm/executor/types.js.map +0 -1
- package/lib/executor/types.d.ts +0 -25
- package/lib/executor/types.js +0 -3
- package/lib/executor/types.js.map +0 -1
package/lib/executor/utils.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.flushStuckTransaction = exports.
|
|
26
|
+
exports.flushStuckTransaction = exports.getAuthorizationList = exports.encodeHandleOpsCalldata = exports.packUserOps = exports.getUserOpHashes = exports.calculateAA95GasFloor = exports.isTransactionUnderpricedError = void 0;
|
|
27
27
|
const types_1 = require("../types/index.js");
|
|
28
28
|
const utils_1 = require("../utils/index.js");
|
|
29
29
|
// biome-ignore lint/style/noNamespaceImport: explicitly make it clear when sentry is used
|
|
@@ -35,195 +35,58 @@ const isTransactionUnderpricedError = (e) => {
|
|
|
35
35
|
.includes("replacement transaction underpriced");
|
|
36
36
|
};
|
|
37
37
|
exports.isTransactionUnderpricedError = isTransactionUnderpricedError;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
// V7 source: https://github.com/eth-infinitism/account-abstraction/blob/releases/v0.7/contracts/core/EntryPoint.sol
|
|
39
|
+
// V6 source: https://github.com/eth-infinitism/account-abstraction/blob/fa61290d37d079e928d92d53a122efcc63822214/contracts/core/EntryPoint.sol#L236
|
|
40
|
+
function calculateAA95GasFloor(userOps) {
|
|
41
|
+
let gasFloor = 0n;
|
|
42
|
+
for (const userOpInfo of userOps) {
|
|
43
|
+
const { userOp } = userOpInfo;
|
|
44
|
+
if ((0, utils_1.isVersion07)(userOp)) {
|
|
45
|
+
const totalGas = userOp.callGasLimit +
|
|
46
|
+
(userOp.paymasterPostOpGasLimit || 0n) +
|
|
47
|
+
10000n;
|
|
48
|
+
gasFloor += (totalGas * 64n) / 63n;
|
|
43
49
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return authorizationList.length > 0 ? authorizationList : undefined;
|
|
48
|
-
};
|
|
49
|
-
exports.getAuthorizationList = getAuthorizationList;
|
|
50
|
-
function simulatedOpsToResults(simulatedOps, transactionInfo) {
|
|
51
|
-
return simulatedOps.map(({ reason, owh }) => {
|
|
52
|
-
if (reason === undefined) {
|
|
53
|
-
return {
|
|
54
|
-
status: "success",
|
|
55
|
-
value: {
|
|
56
|
-
userOperation: {
|
|
57
|
-
entryPoint: transactionInfo.entryPoint,
|
|
58
|
-
userOperation: owh.userOperation,
|
|
59
|
-
userOperationHash: owh.userOperationHash,
|
|
60
|
-
lastReplaced: Date.now(),
|
|
61
|
-
firstSubmitted: Date.now()
|
|
62
|
-
},
|
|
63
|
-
transactionInfo
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
status: "failure",
|
|
69
|
-
error: {
|
|
70
|
-
entryPoint: transactionInfo.entryPoint,
|
|
71
|
-
userOperation: owh.userOperation,
|
|
72
|
-
userOpHash: owh.userOperationHash,
|
|
73
|
-
reason: reason
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
exports.simulatedOpsToResults = simulatedOpsToResults;
|
|
79
|
-
async function filterOpsAndEstimateGas(entryPoint, ep, wallet, ops, nonce, maxFeePerGas, maxPriorityFeePerGas, blockTag, onlyPre1559, fixedGasLimitForEstimation, reputationManager, logger, authorizationList) {
|
|
80
|
-
const simulatedOps = ops.map((owh) => {
|
|
81
|
-
return { owh, reason: undefined };
|
|
82
|
-
});
|
|
83
|
-
let gasLimit;
|
|
84
|
-
const isUserOpV06 = (0, utils_1.isVersion06)(simulatedOps[0].owh.userOperation);
|
|
85
|
-
const gasOptions = onlyPre1559
|
|
86
|
-
? { gasPrice: maxFeePerGas }
|
|
87
|
-
: { maxFeePerGas, maxPriorityFeePerGas };
|
|
88
|
-
let fixedEstimationGasLimit = fixedGasLimitForEstimation;
|
|
89
|
-
let retriesLeft = 5;
|
|
90
|
-
while (simulatedOps.filter((op) => op.reason === undefined).length > 0) {
|
|
91
|
-
try {
|
|
92
|
-
const opsToSend = simulatedOps
|
|
93
|
-
.filter((op) => op.reason === undefined)
|
|
94
|
-
.map(({ owh }) => {
|
|
95
|
-
const op = owh.userOperation;
|
|
96
|
-
return isUserOpV06
|
|
97
|
-
? op
|
|
98
|
-
: (0, utils_1.toPackedUserOperation)(op);
|
|
99
|
-
});
|
|
100
|
-
gasLimit = await ep.estimateGas.handleOps(
|
|
101
|
-
// @ts-ignore - ep is set correctly for opsToSend, but typescript doesn't know that
|
|
102
|
-
[opsToSend, wallet.address], {
|
|
103
|
-
account: wallet,
|
|
104
|
-
nonce: nonce,
|
|
105
|
-
blockTag: blockTag,
|
|
106
|
-
...(fixedEstimationGasLimit !== undefined && {
|
|
107
|
-
gas: fixedEstimationGasLimit
|
|
108
|
-
}),
|
|
109
|
-
...(authorizationList !== undefined && {
|
|
110
|
-
authorizationList
|
|
111
|
-
}),
|
|
112
|
-
...gasOptions
|
|
113
|
-
});
|
|
114
|
-
return { simulatedOps, gasLimit };
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
logger.error({ err, blockTag }, "error estimating gas");
|
|
118
|
-
const e = (0, utils_1.parseViemError)(err);
|
|
119
|
-
if (e instanceof viem_1.ContractFunctionRevertedError) {
|
|
120
|
-
const failedOpError = types_1.failedOpErrorSchema.safeParse(e.data);
|
|
121
|
-
const failedOpWithRevertError = types_1.failedOpWithRevertErrorSchema.safeParse(e.data);
|
|
122
|
-
let errorData = undefined;
|
|
123
|
-
if (failedOpError.success) {
|
|
124
|
-
errorData = failedOpError.data.args;
|
|
125
|
-
}
|
|
126
|
-
if (failedOpWithRevertError.success) {
|
|
127
|
-
errorData = failedOpWithRevertError.data.args;
|
|
128
|
-
}
|
|
129
|
-
if (errorData) {
|
|
130
|
-
if (errorData.reason.indexOf("AA95 out of gas") !== -1 &&
|
|
131
|
-
retriesLeft > 0) {
|
|
132
|
-
retriesLeft--;
|
|
133
|
-
fixedEstimationGasLimit = (0, utils_1.scaleBigIntByPercent)(fixedEstimationGasLimit || BigInt(30_000_000), 110n);
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
logger.debug({
|
|
137
|
-
errorData,
|
|
138
|
-
userOpHashes: simulatedOps
|
|
139
|
-
.filter((op) => op.reason === undefined)
|
|
140
|
-
.map((op) => op.owh.userOperationHash)
|
|
141
|
-
}, "user op in batch invalid");
|
|
142
|
-
const failingOp = simulatedOps.filter((op) => op.reason === undefined)[Number(errorData.opIndex)];
|
|
143
|
-
failingOp.reason = `${errorData.reason}${errorData?.inner
|
|
144
|
-
? ` - ${errorData.inner}`
|
|
145
|
-
: ""}`;
|
|
146
|
-
reputationManager.crashedHandleOps(failingOp.owh.userOperation, entryPoint, failingOp.reason);
|
|
147
|
-
}
|
|
148
|
-
if (!(failedOpError.success || failedOpWithRevertError.success)) {
|
|
149
|
-
sentry.captureException(err);
|
|
150
|
-
logger.error({
|
|
151
|
-
error: `${failedOpError.error} ${failedOpWithRevertError.error}`
|
|
152
|
-
}, "failed to parse failedOpError");
|
|
153
|
-
return {
|
|
154
|
-
simulatedOps: [],
|
|
155
|
-
gasLimit: 0n
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
else if (e instanceof viem_1.EstimateGasExecutionError ||
|
|
160
|
-
err instanceof viem_1.EstimateGasExecutionError) {
|
|
161
|
-
if (e?.cause instanceof viem_1.FeeCapTooLowError && retriesLeft > 0) {
|
|
162
|
-
retriesLeft--;
|
|
163
|
-
logger.info({ error: e.shortMessage }, "error estimating gas due to max fee < basefee");
|
|
164
|
-
if ("gasPrice" in gasOptions) {
|
|
165
|
-
gasOptions.gasPrice = (0, utils_1.scaleBigIntByPercent)(gasOptions.gasPrice || maxFeePerGas, 125n);
|
|
166
|
-
}
|
|
167
|
-
if ("maxFeePerGas" in gasOptions) {
|
|
168
|
-
gasOptions.maxFeePerGas = (0, utils_1.scaleBigIntByPercent)(gasOptions.maxFeePerGas || maxFeePerGas, 125n);
|
|
169
|
-
}
|
|
170
|
-
if ("maxPriorityFeePerGas" in gasOptions) {
|
|
171
|
-
gasOptions.maxPriorityFeePerGas = (0, utils_1.scaleBigIntByPercent)(gasOptions.maxPriorityFeePerGas ||
|
|
172
|
-
maxPriorityFeePerGas, 125n);
|
|
173
|
-
}
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
let errorHexData = "0x";
|
|
178
|
-
if (err instanceof viem_1.EstimateGasExecutionError) {
|
|
179
|
-
errorHexData = (0, utils_1.getRevertErrorData)(err);
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
errorHexData = e?.details.split("Reverted ")[1];
|
|
183
|
-
}
|
|
184
|
-
const errorResult = (0, viem_1.decodeErrorResult)({
|
|
185
|
-
abi: isUserOpV06 ? types_1.EntryPointV06Abi : types_1.EntryPointV07Abi,
|
|
186
|
-
data: errorHexData
|
|
187
|
-
});
|
|
188
|
-
logger.debug({
|
|
189
|
-
errorName: errorResult.errorName,
|
|
190
|
-
args: errorResult.args,
|
|
191
|
-
userOpHashes: simulatedOps
|
|
192
|
-
.filter((op) => op.reason === undefined)
|
|
193
|
-
.map((op) => op.owh.userOperationHash)
|
|
194
|
-
}, "user op in batch invalid");
|
|
195
|
-
if (errorResult.errorName !== "FailedOpWithRevert" &&
|
|
196
|
-
errorResult.errorName !== "FailedOp") {
|
|
197
|
-
logger.error({
|
|
198
|
-
errorName: errorResult.errorName,
|
|
199
|
-
args: errorResult.args
|
|
200
|
-
}, "unexpected error result");
|
|
201
|
-
return {
|
|
202
|
-
simulatedOps: [],
|
|
203
|
-
gasLimit: 0n
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
const failingOp = simulatedOps.filter((op) => op.reason === undefined)[Number(errorResult.args[0])];
|
|
207
|
-
failingOp.reason = errorResult.args[1];
|
|
208
|
-
}
|
|
209
|
-
catch (e) {
|
|
210
|
-
logger.error({ error: JSON.stringify(err) }, "failed to parse error result");
|
|
211
|
-
return {
|
|
212
|
-
simulatedOps: [],
|
|
213
|
-
gasLimit: 0n
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
sentry.captureException(err);
|
|
219
|
-
logger.error({ error: JSON.stringify(err), blockTag }, "error estimating gas");
|
|
220
|
-
return { simulatedOps: [], gasLimit: 0n };
|
|
221
|
-
}
|
|
50
|
+
else {
|
|
51
|
+
gasFloor +=
|
|
52
|
+
userOp.callGasLimit + userOp.verificationGasLimit + 5000n;
|
|
222
53
|
}
|
|
223
54
|
}
|
|
224
|
-
return
|
|
55
|
+
return gasFloor;
|
|
225
56
|
}
|
|
226
|
-
exports.
|
|
57
|
+
exports.calculateAA95GasFloor = calculateAA95GasFloor;
|
|
58
|
+
const getUserOpHashes = (userOpInfos) => {
|
|
59
|
+
return userOpInfos.map(({ userOpHash }) => userOpHash);
|
|
60
|
+
};
|
|
61
|
+
exports.getUserOpHashes = getUserOpHashes;
|
|
62
|
+
const packUserOps = (userOpInfos) => {
|
|
63
|
+
const userOps = userOpInfos.map(({ userOp }) => userOp);
|
|
64
|
+
const isV06 = (0, utils_1.isVersion06)(userOps[0]);
|
|
65
|
+
const packedUserOps = isV06
|
|
66
|
+
? userOps
|
|
67
|
+
: userOps.map((op) => (0, utils_1.toPackedUserOperation)(op));
|
|
68
|
+
return packedUserOps;
|
|
69
|
+
};
|
|
70
|
+
exports.packUserOps = packUserOps;
|
|
71
|
+
const encodeHandleOpsCalldata = ({ userOps, beneficiary }) => {
|
|
72
|
+
const ops = userOps.map(({ userOp }) => userOp);
|
|
73
|
+
const isV06 = (0, utils_1.isVersion06)(ops[0]);
|
|
74
|
+
const packedUserOps = (0, exports.packUserOps)(userOps);
|
|
75
|
+
return (0, viem_1.encodeFunctionData)({
|
|
76
|
+
abi: isV06 ? types_1.EntryPointV06Abi : types_1.EntryPointV07Abi,
|
|
77
|
+
functionName: "handleOps",
|
|
78
|
+
args: [packedUserOps, beneficiary]
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
exports.encodeHandleOpsCalldata = encodeHandleOpsCalldata;
|
|
82
|
+
const getAuthorizationList = (userOpInfos) => {
|
|
83
|
+
const authList = userOpInfos
|
|
84
|
+
.map(({ userOp }) => userOp)
|
|
85
|
+
.map(({ eip7702Auth }) => eip7702Auth)
|
|
86
|
+
.filter(Boolean);
|
|
87
|
+
return authList.length ? authList : undefined;
|
|
88
|
+
};
|
|
89
|
+
exports.getAuthorizationList = getAuthorizationList;
|
|
227
90
|
async function flushStuckTransaction(publicClient, walletClient, wallet, gasPrice, logger) {
|
|
228
91
|
const latestNonce = await publicClient.getTransactionCount({
|
|
229
92
|
address: wallet.address,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,10 @@ export declare class EventManager {
|
|
|
17
17
|
emitQueued(userOperationHash: Hex): Promise<void>;
|
|
18
18
|
emitReceived(userOperationHash: Hex, timestamp?: number): Promise<void>;
|
|
19
19
|
emitFailedValidation(userOperationHash: Hex, reason?: string, aaError?: string): Promise<void>;
|
|
20
|
-
emitSubmitted(
|
|
20
|
+
emitSubmitted({ userOpHashes, transactionHash }: {
|
|
21
|
+
userOpHashes: Hex[];
|
|
22
|
+
transactionHash: Hex;
|
|
23
|
+
}): Promise<void>;
|
|
21
24
|
emitDropped(userOperationHash: Hex, reason?: string, aaError?: string): Promise<void>;
|
|
22
25
|
emitAddedToMempool(userOperationHash: Hex): Promise<void>;
|
|
23
26
|
private emitEvent;
|
|
@@ -137,14 +137,16 @@ class EventManager {
|
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
139
|
// emits when the userOperation has been submitted to the network
|
|
140
|
-
async emitSubmitted(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
async emitSubmitted({ userOpHashes, transactionHash }) {
|
|
141
|
+
for (const hash of userOpHashes) {
|
|
142
|
+
await this.emitEvent({
|
|
143
|
+
userOperationHash: hash,
|
|
144
|
+
event: {
|
|
145
|
+
eventType: "submitted",
|
|
146
|
+
transactionHash
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
148
150
|
}
|
|
149
151
|
// emits when the userOperation was dropped from the internal mempool
|
|
150
152
|
async emitDropped(userOperationHash, reason, aaError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../handlers/eventManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../handlers/eventManager.ts"],"names":[],"mappings":"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"}
|
package/lib/mempool/mempool.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { EventManager } from "../handlers/index.js";
|
|
2
|
-
import { type InterfaceValidator, type ReferencedCodeHashes, type StorageMap, type
|
|
3
|
-
import type { HexData32 } from "../types/index.js";
|
|
2
|
+
import { type InterfaceValidator, type ReferencedCodeHashes, type StorageMap, type SubmittedUserOp, type TransactionInfo, type UserOperation, UserOperationBundle, UserOpInfo } from "../types/index.js";
|
|
4
3
|
import type { Metrics } from "../utils/index.js";
|
|
5
4
|
import { type Address } from "viem";
|
|
6
5
|
import type { Monitor } from "./monitoring.js";
|
|
@@ -23,11 +22,11 @@ export declare class MemoryMempool {
|
|
|
23
22
|
metrics: Metrics;
|
|
24
23
|
eventManager: EventManager;
|
|
25
24
|
});
|
|
26
|
-
replaceSubmitted(
|
|
25
|
+
replaceSubmitted(userOpInfo: UserOpInfo, transactionInfo: TransactionInfo): void;
|
|
27
26
|
markSubmitted(userOpHash: `0x${string}`, transactionInfo: TransactionInfo): void;
|
|
28
|
-
dumpOutstanding():
|
|
29
|
-
dumpProcessing():
|
|
30
|
-
dumpSubmittedOps():
|
|
27
|
+
dumpOutstanding(): UserOperation[];
|
|
28
|
+
dumpProcessing(): UserOpInfo[];
|
|
29
|
+
dumpSubmittedOps(): SubmittedUserOp[];
|
|
31
30
|
removeSubmitted(userOpHash: `0x${string}`): void;
|
|
32
31
|
removeProcessing(userOpHash: `0x${string}`): void;
|
|
33
32
|
checkEntityMultipleRoleViolation(op: UserOperation): Promise<void>;
|
|
@@ -36,8 +35,8 @@ export declare class MemoryMempool {
|
|
|
36
35
|
paymasters: Set<Address>;
|
|
37
36
|
factories: Set<Address>;
|
|
38
37
|
};
|
|
39
|
-
add(
|
|
40
|
-
shouldSkip(
|
|
38
|
+
add(userOp: UserOperation, entryPoint: Address, referencedContracts?: ReferencedCodeHashes): [boolean, string];
|
|
39
|
+
shouldSkip(userOpInfo: UserOpInfo, paymasterDeposit: {
|
|
41
40
|
[paymaster: string]: bigint;
|
|
42
41
|
}, stakedEntityCount: {
|
|
43
42
|
[addr: string]: number;
|
|
@@ -61,9 +60,14 @@ export declare class MemoryMempool {
|
|
|
61
60
|
senders: Set<string>;
|
|
62
61
|
storageMap: StorageMap;
|
|
63
62
|
}>;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
getBundles(maxBundleCount?: number): Promise<UserOperationBundle[]>;
|
|
64
|
+
process({ maxGasLimit, entryPoint, minOpsPerBundle, maxBundleCount }: {
|
|
65
|
+
maxGasLimit: bigint;
|
|
66
|
+
entryPoint: Address;
|
|
67
|
+
minOpsPerBundle: number;
|
|
68
|
+
maxBundleCount?: number;
|
|
69
|
+
}): Promise<UserOperationBundle[]>;
|
|
70
|
+
getQueuedUserOperations(userOp: UserOperation, entryPoint: Address, _currentNonceValue?: bigint): Promise<UserOperation[]>;
|
|
67
71
|
clear(): void;
|
|
68
72
|
}
|
|
69
73
|
//# sourceMappingURL=mempool.d.ts.map
|