@pimlico/alto 0.0.0-main.20250714T140908 → 0.0.0-main.20250714T160357

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 (42) hide show
  1. package/contracts/ERC20.sol/ERC20.json +1 -0
  2. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  3. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  4. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  5. package/contracts/LibBytes.sol/LibBytes.json +1 -1
  6. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  7. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  8. package/contracts/build-info/{db6850b431aca366.json → 7710b5a048396e70.json} +1 -1
  9. package/contracts/build-info/880955d5786bfdae.json +1 -0
  10. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  11. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  12. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  13. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  14. package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  15. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  16. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  17. package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  18. package/contracts/utils/Exec.sol/Exec.json +1 -0
  19. package/esm/cli/config/bundler.d.ts +20 -20
  20. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  21. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  22. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  23. package/esm/rpc/estimation/gasEstimations06.js +7 -26
  24. package/esm/rpc/estimation/gasEstimations06.js.map +1 -1
  25. package/esm/rpc/estimation/gasEstimations07.js +13 -25
  26. package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
  27. package/esm/rpc/estimation/utils.d.ts +17 -1
  28. package/esm/rpc/estimation/utils.js +52 -2
  29. package/esm/rpc/estimation/utils.js.map +1 -1
  30. package/esm/rpc/methods/index.js +2 -0
  31. package/esm/rpc/methods/index.js.map +1 -1
  32. package/esm/rpc/methods/pimlico_simulateAssetChange.d.ts +1841 -0
  33. package/esm/rpc/methods/pimlico_simulateAssetChange.js +118 -0
  34. package/esm/rpc/methods/pimlico_simulateAssetChange.js.map +1 -0
  35. package/esm/types/contracts/PimlicoSimulations.d.ts +309 -0
  36. package/esm/types/contracts/PimlicoSimulations.js +399 -0
  37. package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
  38. package/esm/types/schemas.d.ts +12335 -7489
  39. package/esm/types/schemas.js +32 -2
  40. package/esm/types/schemas.js.map +1 -1
  41. package/package.json +1 -1
  42. package/contracts/build-info/7a4c5850aabacc3b.json +0 -1
@@ -0,0 +1,118 @@
1
+ import { ExecutionErrors, RpcError, ValidationErrors, pimlicoSimulateAssetChangeSchema, pimlicoSimulationsAbi } from "../../types/index.js";
2
+ import { isVersion06, isVersion07, isVersion08, toPackedUserOp } from "../../utils/index.js";
3
+ import { getContract } from "viem";
4
+ import { getFilterOpsStateOverride } from "../../utils/entryPointOverrides.js";
5
+ import { createMethodHandler } from "../createMethodHandler.js";
6
+ import { decodeSimulateHandleOpError, prepareSimulationOverrides07, simulationErrors } from "../estimation/utils.js";
7
+ export const pimlicoSimulateAssetChangeHandler = createMethodHandler({
8
+ method: "pimlico_simulateAssetChange",
9
+ schema: pimlicoSimulateAssetChangeSchema,
10
+ handler: async ({ rpcHandler, params }) => {
11
+ const [userOp, entryPoint, trackingParams, stateOverrides] = params;
12
+ const { addresses, tokens } = trackingParams;
13
+ const logger = rpcHandler.logger.child({
14
+ entryPoint,
15
+ addresses,
16
+ tokens
17
+ });
18
+ // Check if pimlico simulation contract is configured
19
+ if (!rpcHandler.config.pimlicoSimulationContract) {
20
+ logger.warn("pimlicoSimulation must be provided");
21
+ throw new RpcError("pimlicoSimulation must be provided", ValidationErrors.InvalidFields);
22
+ }
23
+ const is07 = isVersion07(userOp);
24
+ const is08 = isVersion08(userOp, entryPoint);
25
+ const pimlicoSimulation = getContract({
26
+ abi: [...pimlicoSimulationsAbi, ...simulationErrors],
27
+ address: rpcHandler.config.pimlicoSimulationContract,
28
+ client: rpcHandler.config.publicClient
29
+ });
30
+ let epSimulationsAddress;
31
+ if (is08) {
32
+ epSimulationsAddress =
33
+ rpcHandler.config.entrypointSimulationContractV8;
34
+ }
35
+ else if (is07) {
36
+ epSimulationsAddress =
37
+ rpcHandler.config.entrypointSimulationContractV7;
38
+ }
39
+ // Prepare state override based on version
40
+ let stateOverride;
41
+ if (isVersion06(userOp) && rpcHandler.config.codeOverrideSupport) {
42
+ stateOverride = getFilterOpsStateOverride({
43
+ version: "0.6",
44
+ entryPoint,
45
+ baseFeePerGas: await rpcHandler.gasPriceManager
46
+ .getBaseFee()
47
+ .catch(() => 0n)
48
+ });
49
+ }
50
+ else if (is07 || is08) {
51
+ stateOverride = await prepareSimulationOverrides07({
52
+ userOp: userOp,
53
+ queuedUserOps: [],
54
+ epSimulationsAddress: epSimulationsAddress,
55
+ gasPriceManager: rpcHandler.gasPriceManager,
56
+ userStateOverrides: stateOverrides,
57
+ config: rpcHandler.config
58
+ });
59
+ }
60
+ try {
61
+ let result;
62
+ if (is08) {
63
+ // For EntryPoint v0.8
64
+ const { result: simResult } = await pimlicoSimulation.simulate.simulateAssetChange08([
65
+ toPackedUserOp(userOp),
66
+ entryPoint,
67
+ epSimulationsAddress,
68
+ addresses,
69
+ tokens
70
+ ], {
71
+ stateOverride
72
+ });
73
+ result = [...simResult];
74
+ }
75
+ else if (is07) {
76
+ // For EntryPoint v0.7
77
+ const { result: simResult } = await pimlicoSimulation.simulate.simulateAssetChange07([
78
+ toPackedUserOp(userOp),
79
+ entryPoint,
80
+ epSimulationsAddress,
81
+ addresses,
82
+ tokens
83
+ ], {
84
+ stateOverride
85
+ });
86
+ result = [...simResult];
87
+ }
88
+ else {
89
+ const { result: simResult } = await pimlicoSimulation.simulate.simulateAssetChange06([
90
+ userOp,
91
+ entryPoint,
92
+ addresses,
93
+ tokens
94
+ ], {
95
+ stateOverride
96
+ });
97
+ result = [...simResult];
98
+ }
99
+ return result.map(({ addr: address, token, balanceBefore, balanceAfter }) => {
100
+ return {
101
+ address,
102
+ token,
103
+ balanceBefore,
104
+ balanceAfter
105
+ };
106
+ });
107
+ }
108
+ catch (error) {
109
+ const decodedError = decodeSimulateHandleOpError(error, logger);
110
+ if (decodedError.result === "failed") {
111
+ throw new RpcError(`UserOperation reverted during simulation with reason: ${decodedError.data}`, ExecutionErrors.UserOperationReverted);
112
+ }
113
+ logger.warn("Failed to decode simulation error");
114
+ throw new RpcError("Failed to decode simulation error", ValidationErrors.InvalidFields);
115
+ }
116
+ }
117
+ });
118
+ //# sourceMappingURL=pimlico_simulateAssetChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pimlico_simulateAssetChange.js","sourceRoot":"","sources":["../../../rpc/methods/pimlico_simulateAssetChange.ts"],"names":[],"mappings":"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"}
@@ -706,6 +706,37 @@ export declare const pimlicoSimulationsAbi: readonly [{
706
706
  }];
707
707
  }];
708
708
  readonly stateMutability: "nonpayable";
709
+ }, {
710
+ readonly type: "function";
711
+ readonly name: "getBalances";
712
+ readonly inputs: readonly [{
713
+ readonly name: "addresses";
714
+ readonly type: "address[]";
715
+ readonly internalType: "address[]";
716
+ }, {
717
+ readonly name: "tokens";
718
+ readonly type: "address[]";
719
+ readonly internalType: "address[]";
720
+ }];
721
+ readonly outputs: readonly [{
722
+ readonly name: "";
723
+ readonly type: "tuple[]";
724
+ readonly internalType: "struct PimlicoSimulations.AssetBalance[]";
725
+ readonly components: readonly [{
726
+ readonly name: "addr";
727
+ readonly type: "address";
728
+ readonly internalType: "address";
729
+ }, {
730
+ readonly name: "token";
731
+ readonly type: "address";
732
+ readonly internalType: "address";
733
+ }, {
734
+ readonly name: "amount";
735
+ readonly type: "uint256";
736
+ readonly internalType: "uint256";
737
+ }];
738
+ }];
739
+ readonly stateMutability: "view";
709
740
  }, {
710
741
  readonly type: "function";
711
742
  readonly name: "simulateAndEstimateGas";
@@ -942,6 +973,284 @@ export declare const pimlicoSimulationsAbi: readonly [{
942
973
  }];
943
974
  }];
944
975
  readonly stateMutability: "nonpayable";
976
+ }, {
977
+ readonly type: "function";
978
+ readonly name: "simulateAssetChange06";
979
+ readonly inputs: readonly [{
980
+ readonly name: "userOp";
981
+ readonly type: "tuple";
982
+ readonly internalType: "struct UserOperation";
983
+ readonly components: readonly [{
984
+ readonly name: "sender";
985
+ readonly type: "address";
986
+ readonly internalType: "address";
987
+ }, {
988
+ readonly name: "nonce";
989
+ readonly type: "uint256";
990
+ readonly internalType: "uint256";
991
+ }, {
992
+ readonly name: "initCode";
993
+ readonly type: "bytes";
994
+ readonly internalType: "bytes";
995
+ }, {
996
+ readonly name: "callData";
997
+ readonly type: "bytes";
998
+ readonly internalType: "bytes";
999
+ }, {
1000
+ readonly name: "callGasLimit";
1001
+ readonly type: "uint256";
1002
+ readonly internalType: "uint256";
1003
+ }, {
1004
+ readonly name: "verificationGasLimit";
1005
+ readonly type: "uint256";
1006
+ readonly internalType: "uint256";
1007
+ }, {
1008
+ readonly name: "preVerificationGas";
1009
+ readonly type: "uint256";
1010
+ readonly internalType: "uint256";
1011
+ }, {
1012
+ readonly name: "maxFeePerGas";
1013
+ readonly type: "uint256";
1014
+ readonly internalType: "uint256";
1015
+ }, {
1016
+ readonly name: "maxPriorityFeePerGas";
1017
+ readonly type: "uint256";
1018
+ readonly internalType: "uint256";
1019
+ }, {
1020
+ readonly name: "paymasterAndData";
1021
+ readonly type: "bytes";
1022
+ readonly internalType: "bytes";
1023
+ }, {
1024
+ readonly name: "signature";
1025
+ readonly type: "bytes";
1026
+ readonly internalType: "bytes";
1027
+ }];
1028
+ }, {
1029
+ readonly name: "entryPoint";
1030
+ readonly type: "address";
1031
+ readonly internalType: "contract IEntryPoint";
1032
+ }, {
1033
+ readonly name: "addresses";
1034
+ readonly type: "address[]";
1035
+ readonly internalType: "address[]";
1036
+ }, {
1037
+ readonly name: "tokens";
1038
+ readonly type: "address[]";
1039
+ readonly internalType: "address[]";
1040
+ }];
1041
+ readonly outputs: readonly [{
1042
+ readonly name: "";
1043
+ readonly type: "tuple[]";
1044
+ readonly internalType: "struct PimlicoSimulations.AssetChange[]";
1045
+ readonly components: readonly [{
1046
+ readonly name: "addr";
1047
+ readonly type: "address";
1048
+ readonly internalType: "address";
1049
+ }, {
1050
+ readonly name: "token";
1051
+ readonly type: "address";
1052
+ readonly internalType: "address";
1053
+ }, {
1054
+ readonly name: "balanceBefore";
1055
+ readonly type: "uint256";
1056
+ readonly internalType: "uint256";
1057
+ }, {
1058
+ readonly name: "balanceAfter";
1059
+ readonly type: "uint256";
1060
+ readonly internalType: "uint256";
1061
+ }];
1062
+ }];
1063
+ readonly stateMutability: "nonpayable";
1064
+ }, {
1065
+ readonly type: "function";
1066
+ readonly name: "simulateAssetChange07";
1067
+ readonly inputs: readonly [{
1068
+ readonly name: "userOp";
1069
+ readonly type: "tuple";
1070
+ readonly internalType: "struct PackedUserOperation";
1071
+ readonly components: readonly [{
1072
+ readonly name: "sender";
1073
+ readonly type: "address";
1074
+ readonly internalType: "address";
1075
+ }, {
1076
+ readonly name: "nonce";
1077
+ readonly type: "uint256";
1078
+ readonly internalType: "uint256";
1079
+ }, {
1080
+ readonly name: "initCode";
1081
+ readonly type: "bytes";
1082
+ readonly internalType: "bytes";
1083
+ }, {
1084
+ readonly name: "callData";
1085
+ readonly type: "bytes";
1086
+ readonly internalType: "bytes";
1087
+ }, {
1088
+ readonly name: "accountGasLimits";
1089
+ readonly type: "bytes32";
1090
+ readonly internalType: "bytes32";
1091
+ }, {
1092
+ readonly name: "preVerificationGas";
1093
+ readonly type: "uint256";
1094
+ readonly internalType: "uint256";
1095
+ }, {
1096
+ readonly name: "gasFees";
1097
+ readonly type: "bytes32";
1098
+ readonly internalType: "bytes32";
1099
+ }, {
1100
+ readonly name: "paymasterAndData";
1101
+ readonly type: "bytes";
1102
+ readonly internalType: "bytes";
1103
+ }, {
1104
+ readonly name: "signature";
1105
+ readonly type: "bytes";
1106
+ readonly internalType: "bytes";
1107
+ }];
1108
+ }, {
1109
+ readonly name: "entryPoint";
1110
+ readonly type: "address";
1111
+ readonly internalType: "contract IEntryPoint";
1112
+ }, {
1113
+ readonly name: "entryPointSimulations";
1114
+ readonly type: "address";
1115
+ readonly internalType: "address";
1116
+ }, {
1117
+ readonly name: "addresses";
1118
+ readonly type: "address[]";
1119
+ readonly internalType: "address[]";
1120
+ }, {
1121
+ readonly name: "tokens";
1122
+ readonly type: "address[]";
1123
+ readonly internalType: "address[]";
1124
+ }];
1125
+ readonly outputs: readonly [{
1126
+ readonly name: "";
1127
+ readonly type: "tuple[]";
1128
+ readonly internalType: "struct PimlicoSimulations.AssetChange[]";
1129
+ readonly components: readonly [{
1130
+ readonly name: "addr";
1131
+ readonly type: "address";
1132
+ readonly internalType: "address";
1133
+ }, {
1134
+ readonly name: "token";
1135
+ readonly type: "address";
1136
+ readonly internalType: "address";
1137
+ }, {
1138
+ readonly name: "balanceBefore";
1139
+ readonly type: "uint256";
1140
+ readonly internalType: "uint256";
1141
+ }, {
1142
+ readonly name: "balanceAfter";
1143
+ readonly type: "uint256";
1144
+ readonly internalType: "uint256";
1145
+ }];
1146
+ }];
1147
+ readonly stateMutability: "nonpayable";
1148
+ }, {
1149
+ readonly type: "function";
1150
+ readonly name: "simulateAssetChange08";
1151
+ readonly inputs: readonly [{
1152
+ readonly name: "userOp";
1153
+ readonly type: "tuple";
1154
+ readonly internalType: "struct PackedUserOperation";
1155
+ readonly components: readonly [{
1156
+ readonly name: "sender";
1157
+ readonly type: "address";
1158
+ readonly internalType: "address";
1159
+ }, {
1160
+ readonly name: "nonce";
1161
+ readonly type: "uint256";
1162
+ readonly internalType: "uint256";
1163
+ }, {
1164
+ readonly name: "initCode";
1165
+ readonly type: "bytes";
1166
+ readonly internalType: "bytes";
1167
+ }, {
1168
+ readonly name: "callData";
1169
+ readonly type: "bytes";
1170
+ readonly internalType: "bytes";
1171
+ }, {
1172
+ readonly name: "accountGasLimits";
1173
+ readonly type: "bytes32";
1174
+ readonly internalType: "bytes32";
1175
+ }, {
1176
+ readonly name: "preVerificationGas";
1177
+ readonly type: "uint256";
1178
+ readonly internalType: "uint256";
1179
+ }, {
1180
+ readonly name: "gasFees";
1181
+ readonly type: "bytes32";
1182
+ readonly internalType: "bytes32";
1183
+ }, {
1184
+ readonly name: "paymasterAndData";
1185
+ readonly type: "bytes";
1186
+ readonly internalType: "bytes";
1187
+ }, {
1188
+ readonly name: "signature";
1189
+ readonly type: "bytes";
1190
+ readonly internalType: "bytes";
1191
+ }];
1192
+ }, {
1193
+ readonly name: "entryPoint";
1194
+ readonly type: "address";
1195
+ readonly internalType: "contract IEntryPoint";
1196
+ }, {
1197
+ readonly name: "entryPointSimulations";
1198
+ readonly type: "address";
1199
+ readonly internalType: "address";
1200
+ }, {
1201
+ readonly name: "addresses";
1202
+ readonly type: "address[]";
1203
+ readonly internalType: "address[]";
1204
+ }, {
1205
+ readonly name: "tokens";
1206
+ readonly type: "address[]";
1207
+ readonly internalType: "address[]";
1208
+ }];
1209
+ readonly outputs: readonly [{
1210
+ readonly name: "";
1211
+ readonly type: "tuple[]";
1212
+ readonly internalType: "struct PimlicoSimulations.AssetChange[]";
1213
+ readonly components: readonly [{
1214
+ readonly name: "addr";
1215
+ readonly type: "address";
1216
+ readonly internalType: "address";
1217
+ }, {
1218
+ readonly name: "token";
1219
+ readonly type: "address";
1220
+ readonly internalType: "address";
1221
+ }, {
1222
+ readonly name: "balanceBefore";
1223
+ readonly type: "uint256";
1224
+ readonly internalType: "uint256";
1225
+ }, {
1226
+ readonly name: "balanceAfter";
1227
+ readonly type: "uint256";
1228
+ readonly internalType: "uint256";
1229
+ }];
1230
+ }];
1231
+ readonly stateMutability: "nonpayable";
1232
+ }, {
1233
+ readonly type: "function";
1234
+ readonly name: "simulateEntryPointBulk";
1235
+ readonly inputs: readonly [{
1236
+ readonly name: "entryPointSimulation";
1237
+ readonly type: "address";
1238
+ readonly internalType: "address";
1239
+ }, {
1240
+ readonly name: "entryPoint";
1241
+ readonly type: "address";
1242
+ readonly internalType: "address payable";
1243
+ }, {
1244
+ readonly name: "data";
1245
+ readonly type: "bytes[]";
1246
+ readonly internalType: "bytes[]";
1247
+ }];
1248
+ readonly outputs: readonly [{
1249
+ readonly name: "";
1250
+ readonly type: "bytes[]";
1251
+ readonly internalType: "bytes[]";
1252
+ }];
1253
+ readonly stateMutability: "nonpayable";
945
1254
  }, {
946
1255
  readonly type: "function";
947
1256
  readonly name: "simulateHandleOp";