viem-tx-sim 0.1.1 → 0.2.1

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 (39) hide show
  1. package/README.md +115 -34
  2. package/contracts/TxSimulator.sol +83 -20
  3. package/dist/generated/txSimulatorBytecode.d.ts +1 -1
  4. package/dist/generated/txSimulatorBytecode.d.ts.map +1 -1
  5. package/dist/generated/txSimulatorBytecode.js +1 -1
  6. package/dist/generated/txSimulatorBytecode.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/internal/queryDiscovery.d.ts +8 -0
  10. package/dist/internal/queryDiscovery.d.ts.map +1 -0
  11. package/dist/internal/queryDiscovery.js +38 -0
  12. package/dist/internal/queryDiscovery.js.map +1 -0
  13. package/dist/internal/requirements.d.ts +2 -1
  14. package/dist/internal/requirements.d.ts.map +1 -1
  15. package/dist/internal/requirements.js +23 -9
  16. package/dist/internal/requirements.js.map +1 -1
  17. package/dist/internal/simulator.d.ts +19 -3
  18. package/dist/internal/simulator.d.ts.map +1 -1
  19. package/dist/internal/simulator.js +12 -16
  20. package/dist/internal/simulator.js.map +1 -1
  21. package/dist/internal/slots.d.ts +4 -2
  22. package/dist/internal/slots.d.ts.map +1 -1
  23. package/dist/internal/slots.js +4 -2
  24. package/dist/internal/slots.js.map +1 -1
  25. package/dist/txSimulator.d.ts +64 -40
  26. package/dist/txSimulator.d.ts.map +1 -1
  27. package/dist/txSimulator.js +68 -16
  28. package/dist/txSimulator.js.map +1 -1
  29. package/dist/types.d.ts +59 -16
  30. package/dist/types.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/generated/txSimulatorBytecode.ts +1 -1
  33. package/src/index.ts +4 -1
  34. package/src/internal/queryDiscovery.ts +49 -0
  35. package/src/internal/requirements.ts +23 -9
  36. package/src/internal/simulator.ts +28 -24
  37. package/src/internal/slots.ts +5 -2
  38. package/src/txSimulator.ts +164 -63
  39. package/src/types.ts +63 -17
@@ -1,5 +1,6 @@
1
1
  import type { EstimatedAssetRequirements, EstimateAssetRequirementsArgs } from "../types.js";
2
2
  import type { ClientArgs } from "./rpc.js";
3
- /** @internal Implements {@link TxSimulator.estimateAssetRequirements}. Prefer the instance API from the package root. */
3
+ /** @internal Implements {@link TxSimulator.tokenOverrides.estimateRequirements}. Prefer the instance API from the package root. */
4
4
  export declare function estimateAssetRequirements(args: EstimateAssetRequirementsArgs & ClientArgs): Promise<EstimatedAssetRequirements>;
5
+ export declare const estimateTokenOverrideRequirements: typeof estimateAssetRequirements;
5
6
  //# sourceMappingURL=requirements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAc3C,yHAAyH;AACzH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,6BAA6B,GAAG,UAAU,GAC/C,OAAO,CAAC,0BAA0B,CAAC,CA6GrC"}
1
+ {"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,6BAA6B,EAE9B,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAc3C,mIAAmI;AACnI,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,6BAA6B,GAAG,UAAU,GAC/C,OAAO,CAAC,0BAA0B,CAAC,CAoHrC;AAED,eAAO,MAAM,iCAAiC,kCAA4B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { decodeFunctionData, parseAbi } from "viem";
2
2
  import { InvalidSimulationInputError } from "../errors.js";
3
+ import { OVERRIDE_TOKEN_AMOUNT } from "../constants.js";
3
4
  import { prepareAllowanceOverrides, prepareBalanceOverrides } from "./slots.js";
4
5
  import { addressKey, uniqueAddresses } from "./data.js";
5
6
  import { blockOptionsSpread } from "./rpc.js";
@@ -8,7 +9,7 @@ const allowanceSettingAbi = parseAbi([
8
9
  "function approve(address spender, uint256 amount) returns (bool)",
9
10
  "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)",
10
11
  ]);
11
- /** @internal Implements {@link TxSimulator.estimateAssetRequirements}. Prefer the instance API from the package root. */
12
+ /** @internal Implements {@link TxSimulator.tokenOverrides.estimateRequirements}. Prefer the instance API from the package root. */
12
13
  export async function estimateAssetRequirements(args) {
13
14
  if (args.calls.length === 0) {
14
15
  throw new InvalidSimulationInputError("estimateAssetRequirements requires at least one call.");
@@ -18,14 +19,22 @@ export async function estimateAssetRequirements(args) {
18
19
  data: call.data,
19
20
  value: call.value ?? 0n,
20
21
  }));
21
- const candidateAddresses = await discoverCandidateAddresses({
22
- client: args.client,
23
- from: args.from,
24
- calls,
25
- gas: args.gas,
26
- debug: args.debug,
27
- ...blockOptionsSpread(args),
28
- });
22
+ let candidateAddresses;
23
+ try {
24
+ candidateAddresses = await discoverCandidateAddresses({
25
+ client: args.client,
26
+ from: args.from,
27
+ calls,
28
+ gas: args.gas,
29
+ debug: args.debug,
30
+ ...blockOptionsSpread(args),
31
+ });
32
+ }
33
+ catch (cause) {
34
+ if (!isInsufficientFunds(cause))
35
+ throw cause;
36
+ candidateAddresses = uniqueAddresses(calls.map((call) => call.to));
37
+ }
29
38
  const recon = await runSimulator({
30
39
  client: args.client,
31
40
  from: args.from,
@@ -68,6 +77,7 @@ export async function estimateAssetRequirements(args) {
68
77
  calls,
69
78
  candidates: candidateAddresses,
70
79
  tokenSlotOverrides,
80
+ extraStateOverrides: [{ address: args.from, balance: OVERRIDE_TOKEN_AMOUNT }],
71
81
  allowanceProbes,
72
82
  gas: args.gas,
73
83
  debug: args.debug,
@@ -101,6 +111,10 @@ export async function estimateAssetRequirements(args) {
101
111
  }
102
112
  return { status: "success", ...shared };
103
113
  }
114
+ export const estimateTokenOverrideRequirements = estimateAssetRequirements;
115
+ function isInsufficientFunds(cause) {
116
+ return cause instanceof Error && cause.message.includes("Insufficient funds");
117
+ }
104
118
  function allowancePairs(tokens, spenders) {
105
119
  return tokens.flatMap((token) => spenders
106
120
  .filter((spender) => addressKey(token) !== addressKey(spender))
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Abi, Address, StateOverride } from "viem";
2
- import type { SimulatedCall, SimulationResult, TokenSlotOverride } from "../types.js";
1
+ import type { Abi, Address, Hex, StateOverride } from "viem";
2
+ import type { RevertError, SimulatedCall, TokenSlotOverride } from "../types.js";
3
3
  import type { RpcCallArgs } from "./rpc.js";
4
4
  type ProbeData = {
5
5
  observedTokens: Address[];
@@ -7,10 +7,22 @@ type ProbeData = {
7
7
  maxTokenOutflows: readonly bigint[];
8
8
  maxNativeOutflow: bigint;
9
9
  allowanceCheckpoints: readonly bigint[];
10
+ balanceCheckpoints: readonly bigint[];
11
+ balanceProbeOk: readonly boolean[];
10
12
  };
11
- export type SimulatorResult = SimulationResult & {
13
+ type SimulatorBase = {
12
14
  probeData: ProbeData;
13
15
  };
16
+ export type SimulatorResult = (SimulatorBase & {
17
+ status: "success";
18
+ }) | (SimulatorBase & {
19
+ status: "reverted";
20
+ revertData: Hex;
21
+ revertReason?: string;
22
+ revertError?: RevertError;
23
+ revertSelector?: Hex;
24
+ failingCallIndex: number;
25
+ });
14
26
  export declare function runSimulator(args: RpcCallArgs & {
15
27
  from: Address;
16
28
  calls: readonly SimulatedCall[];
@@ -21,6 +33,10 @@ export declare function runSimulator(args: RpcCallArgs & {
21
33
  token: Address;
22
34
  spender: Address;
23
35
  }[];
36
+ balanceProbes?: readonly {
37
+ token: Address | "native";
38
+ account: Address;
39
+ }[];
24
40
  debugStep?: string;
25
41
  errorAbi?: Abi;
26
42
  }): Promise<SimulatorResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../src/internal/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAO,aAAa,EAAE,MAAM,MAAM,CAAC;AAU7D,OAAO,KAAK,EAEV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAWrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,KAAK,SAAS,GAAG;IACf,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAUF,wBAAsB,YAAY,CAChC,IAAI,EAAE,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,eAAe,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACA,OAAO,CAAC,eAAe,CAAC,CAmH1B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CACjC,GACA,OAAO,CAAC,OAAO,EAAE,CAAC,CAsBpB;AA8BD,KAAK,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../src/internal/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAW7D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,KAAK,SAAS,GAAG;IACf,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAC;CACpC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,CAAC,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,GACvC,CAAC,aAAa,GAAG;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,CAAC;AAWP,wBAAsB,YAAY,CAChC,IAAI,EAAE,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,eAAe,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAClE,aAAa,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACA,OAAO,CAAC,eAAe,CAAC,CA4G1B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CACjC,GACA,OAAO,CAAC,OAAO,EAAE,CAAC,CAsBpB;AA8BD,KAAK,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { decodeErrorResult, decodeFunctionResult, encodeFunctionData, parseAbi, slice, size, } from "viem";
1
+ import { decodeErrorResult, decodeFunctionResult, encodeFunctionData, parseAbi, slice, size, zeroAddress, } from "viem";
2
2
  import { InvalidSimulationInputError, StateOverrideUnsupportedError } from "../errors.js";
3
3
  import { txSimulatorRuntimeBytecode } from "../generated/txSimulatorBytecode.js";
4
4
  import { MAX_UINT256, addressKey, getCallData, normalizeAddress, uint256Hex, uniqueAddresses, } from "./data.js";
@@ -6,12 +6,17 @@ import { blockOptionsSpread, buildCallParameters, createAccessList, formatRpcErr
6
6
  const txSimulatorAbi = parseAbi([
7
7
  "struct SimulatedCall { address to; uint256 value; bytes data; }",
8
8
  "struct AllowanceProbe { address token; address spender; }",
9
- "struct SimulationResult { bool success; uint256 failingCallIndex; bytes revertData; int256 nativeDelta; address[] observedTokens; address[] deltaTokens; int256[] tokenDeltas; uint256[] maxTokenOutflows; uint256 maxNativeOutflow; uint256[] allowanceCheckpoints; }",
10
- "function simulate(SimulatedCall[] calls, address[] candidates, AllowanceProbe[] probes) returns (SimulationResult)",
9
+ "struct BalanceProbe { address token; address account; }",
10
+ "struct SimulationResult { bool success; uint256 failingCallIndex; bytes revertData; int256 nativeDelta; address[] observedTokens; address[] deltaTokens; int256[] tokenDeltas; uint256[] maxTokenOutflows; uint256 maxNativeOutflow; uint256[] allowanceCheckpoints; uint256[] balanceCheckpoints; bool[] balanceProbeOk; }",
11
+ "function simulate(SimulatedCall[] calls, address[] candidates, AllowanceProbe[] probes, BalanceProbe[] balanceProbes) returns (SimulationResult)",
11
12
  "function isValidSignature(bytes32 hash, bytes signature) view returns (bytes4)",
12
13
  ]);
13
14
  export async function runSimulator(args) {
14
15
  const candidates = uniqueAddresses(args.candidates);
16
+ const balanceProbes = (args.balanceProbes ?? []).map((probe) => ({
17
+ token: probe.token === "native" ? zeroAddress : probe.token,
18
+ account: probe.account,
19
+ }));
15
20
  const data = encodeFunctionData({
16
21
  abi: txSimulatorAbi,
17
22
  functionName: "simulate",
@@ -23,6 +28,7 @@ export async function runSimulator(args) {
23
28
  })),
24
29
  candidates,
25
30
  args.allowanceProbes ?? [],
31
+ balanceProbes,
26
32
  ],
27
33
  });
28
34
  const stateOverride = buildStateOverride([
@@ -39,6 +45,7 @@ export async function runSimulator(args) {
39
45
  from: args.from,
40
46
  calls: args.calls.length,
41
47
  candidates: candidates.length,
48
+ balanceProbes: balanceProbes.length,
42
49
  storageOverrides: args.tokenSlotOverrides?.length ?? 0,
43
50
  stateOverrideAccounts: stateOverride.length,
44
51
  },
@@ -66,29 +73,19 @@ export async function runSimulator(args) {
66
73
  catch (cause) {
67
74
  throw new StateOverrideUnsupportedError(formatRpcError("eth_call returned undecodable simulator output", cause));
68
75
  }
69
- const assetBalanceDeltas = [];
70
- if (result.nativeDelta !== 0n) {
71
- assetBalanceDeltas.push({ asset: "native", delta: result.nativeDelta });
72
- }
73
- for (let i = 0; i < result.deltaTokens.length; ++i) {
74
- const token = result.deltaTokens[i];
75
- const delta = result.tokenDeltas[i];
76
- if (token && delta !== undefined && delta !== 0n) {
77
- assetBalanceDeltas.push({ asset: token, delta });
78
- }
79
- }
80
76
  const probeData = {
81
77
  observedTokens: uniqueAddresses(result.observedTokens),
82
78
  candidates,
83
79
  maxTokenOutflows: result.maxTokenOutflows,
84
80
  maxNativeOutflow: result.maxNativeOutflow,
85
81
  allowanceCheckpoints: result.allowanceCheckpoints,
82
+ balanceCheckpoints: result.balanceCheckpoints,
83
+ balanceProbeOk: result.balanceProbeOk,
86
84
  };
87
85
  if (!result.success) {
88
86
  const decodedRevert = decodeRevert(result.revertData, args.errorAbi);
89
87
  return {
90
88
  status: "reverted",
91
- assetBalanceDeltas,
92
89
  revertData: result.revertData,
93
90
  ...(decodedRevert.revertReason !== undefined
94
91
  ? { revertReason: decodedRevert.revertReason }
@@ -105,7 +102,6 @@ export async function runSimulator(args) {
105
102
  }
106
103
  return {
107
104
  status: "success",
108
- assetBalanceDeltas,
109
105
  probeData,
110
106
  };
111
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../src/internal/simulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../src/internal/simulator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { PreparedAllowanceOverrides, PreparedBalanceOverrides, PrepareAllowanceOverridesArgs, PrepareBalanceOverridesArgs } from "../types.js";
2
2
  import type { ClientArgs } from "./rpc.js";
3
- /** @internal Implements `TxSimulator.prepareBalanceOverrides`. Prefer the instance API from the package root. */
3
+ /** @internal Implements `TxSimulator.tokenOverrides.forBalances`. Prefer the instance API from the package root. */
4
4
  export declare function prepareBalanceOverrides(args: PrepareBalanceOverridesArgs & ClientArgs): Promise<PreparedBalanceOverrides>;
5
- /** @internal Implements `TxSimulator.prepareAllowanceOverrides`. Prefer the instance API from the package root. */
5
+ /** @internal Implements `TxSimulator.tokenOverrides.forAllowances`. Prefer the instance API from the package root. */
6
6
  export declare function prepareAllowanceOverrides(args: PrepareAllowanceOverridesArgs & ClientArgs): Promise<PreparedAllowanceOverrides>;
7
+ export declare const prepareBalanceTokenOverrides: typeof prepareBalanceOverrides;
8
+ export declare const prepareAllowanceTokenOverrides: typeof prepareAllowanceOverrides;
7
9
  //# sourceMappingURL=slots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/internal/slots.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AAaxD,iHAAiH;AACjH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,2BAA2B,GAAG,UAAU,GAC7C,OAAO,CAAC,wBAAwB,CAAC,CAkBnC;AAED,mHAAmH;AACnH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,6BAA6B,GAAG,UAAU,GAC/C,OAAO,CAAC,0BAA0B,CAAC,CAcrC"}
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/internal/slots.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AAaxD,oHAAoH;AACpH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,2BAA2B,GAAG,UAAU,GAC7C,OAAO,CAAC,wBAAwB,CAAC,CAkBnC;AAED,sHAAsH;AACtH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,6BAA6B,GAAG,UAAU,GAC/C,OAAO,CAAC,0BAA0B,CAAC,CAcrC;AAkID,eAAO,MAAM,4BAA4B,gCAA0B,CAAC;AACpE,eAAO,MAAM,8BAA8B,kCAA4B,CAAC"}
@@ -4,7 +4,7 @@ import { addressKey, uint256Hex } from "./data.js";
4
4
  import { discoverAllowanceSlot, discoverBalanceSlot, readAllowance } from "./probes.js";
5
5
  import { blockOptionsSpread } from "./rpc.js";
6
6
  // Orchestration
7
- /** @internal Implements `TxSimulator.prepareBalanceOverrides`. Prefer the instance API from the package root. */
7
+ /** @internal Implements `TxSimulator.tokenOverrides.forBalances`. Prefer the instance API from the package root. */
8
8
  export async function prepareBalanceOverrides(args) {
9
9
  const slots = await Promise.all(args.tokens.map((token) => discoverBalanceSlot({
10
10
  client: args.client,
@@ -20,7 +20,7 @@ export async function prepareBalanceOverrides(args) {
20
20
  unresolved: args.tokens.filter((_, index) => slots[index] === undefined),
21
21
  };
22
22
  }
23
- /** @internal Implements `TxSimulator.prepareAllowanceOverrides`. Prefer the instance API from the package root. */
23
+ /** @internal Implements `TxSimulator.tokenOverrides.forAllowances`. Prefer the instance API from the package root. */
24
24
  export async function prepareAllowanceOverrides(args) {
25
25
  const slots = await prepareAllowanceOverridesWithInference({
26
26
  client: args.client,
@@ -115,6 +115,8 @@ async function computeAllowanceSlot(args) {
115
115
  function mappingSlot(key, baseSlot) {
116
116
  return keccak256(encodeAbiParameters([{ type: "address" }, { type: "uint256" }], [key, typeof baseSlot === "bigint" ? baseSlot : BigInt(baseSlot)]));
117
117
  }
118
+ export const prepareBalanceTokenOverrides = prepareBalanceOverrides;
119
+ export const prepareAllowanceTokenOverrides = prepareAllowanceOverrides;
118
120
  function allowanceSlotFor(owner, spender, base) {
119
121
  return mappingSlot(spender, mappingSlot(owner, base));
120
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/internal/slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/internal/slots.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { PreparedAllowanceOverrides, PreparedBalanceOverrides, PrepareAllowanceOverridesArgs, PrepareBalanceOverridesArgs, EstimateAssetRequirementsArgs, EstimatedAssetRequirements, SimulateArgs, SimulationResult, TxSimulatorConfig } from "./types.js";
1
+ import type { Address } from "viem";
2
+ import type { BalanceQuery, ForUserBalanceQueriesArgs, PreparedAllowanceOverrides, PreparedBalanceOverrides, PrepareAllowanceOverridesArgs, PrepareBalanceOverridesArgs, EstimateAssetRequirementsArgs, EstimatedAssetRequirements, SimulateArgs, SimulationResult, TxSimulatorConfig } from "./types.js";
2
3
  /**
3
4
  * Bound transaction simulator for one viem public client.
4
5
  *
@@ -8,15 +9,13 @@ import type { PreparedAllowanceOverrides, PreparedBalanceOverrides, PrepareAllow
8
9
  */
9
10
  export interface TxSimulator {
10
11
  /**
11
- * Simulates one call or sequential batch and returns raw native/token balance deltas.
12
+ * Simulates one call or sequential batch and returns requested balance deltas.
12
13
  *
13
- * This uses `eth_createAccessList` for candidate discovery and one `eth_call` with state
14
- * overrides that injects the simulator at `from`. It does not automatically forge balances or
15
- * allowances; preparation methods return ready-to-use `tokenSlotOverrides` for view-only or
16
- * unfunded accounts. Transaction reverts return `status: "reverted"` instead of throwing.
14
+ * This performs one `eth_call` with state overrides that inject the simulator at `from`.
15
+ * Balances are observed only for `balanceQueries`; query the tokens you forge if you want to
16
+ * observe them. Transaction reverts return `status: "reverted"` instead of throwing.
17
17
  *
18
18
  * @throws InvalidSimulationInputError when `calls` is empty.
19
- * @throws AccessListUnsupportedError when the RPC endpoint cannot provide access lists.
20
19
  * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides or
21
20
  * returns undecodable simulator output.
22
21
  *
@@ -26,43 +25,68 @@ export interface TxSimulator {
26
25
  * const result = await sim.simulate({
27
26
  * from,
28
27
  * calls: [{ to, data, value: 0n }],
28
+ * balanceQueries: [{ asset: "native", account: from }],
29
29
  * });
30
30
  * ```
31
31
  */
32
32
  simulate: (args: SimulateArgs) => Promise<SimulationResult>;
33
- /**
34
- * Prepares ERC-20 balance overrides for `from`.
35
- *
36
- * Each token is probed with RPC-only access lists and sentinel state overrides. Tokens the
37
- * simulator cannot `deal` by verified storage write are returned in `unresolved` rather than
38
- * thrown.
39
- *
40
- * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
41
- */
42
- prepareBalanceOverrides: (args: PrepareBalanceOverridesArgs) => Promise<PreparedBalanceOverrides>;
43
- /**
44
- * Prepares ERC-20 allowance overrides for `from` and the requested token/spender pairs.
45
- *
46
- * Standard Solidity allowance layouts are inferred after one verified probe per token where
47
- * possible; non-standard layouts fall back to per-pair probing. Pairs the simulator cannot `deal`
48
- * via verified storage write are returned in `unresolved` rather than thrown.
49
- *
50
- * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
51
- */
52
- prepareAllowanceOverrides: (args: PrepareAllowanceOverridesArgs) => Promise<PreparedAllowanceOverrides>;
53
- /**
54
- * Estimates the balances and approvals needed to execute the observed path.
55
- *
56
- * Use this when the tokens or spenders are not known ahead of time. Returned amounts are estimated
57
- * under forged balances/allowances and should be padded before display or transaction assembly;
58
- * unreliable measurements are reported under `unresolved`.
59
- *
60
- * @throws InvalidSimulationInputError when `calls` is empty.
61
- * @throws AccessListUnsupportedError when the RPC endpoint cannot provide access lists.
62
- * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides or
63
- * returns undecodable simulator output.
64
- */
65
- estimateAssetRequirements: (args: EstimateAssetRequirementsArgs) => Promise<EstimatedAssetRequirements>;
33
+ readonly balanceQueries: {
34
+ /**
35
+ * Discovers wallet-style balance queries for `from`.
36
+ *
37
+ * This runs access-list candidate discovery, then one token-filter `eth_call`, and returns
38
+ * native plus token balance queries for `from`. Pass the result to `simulate`.
39
+ *
40
+ * @throws AccessListUnsupportedError when the RPC endpoint cannot provide access lists.
41
+ * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
42
+ */
43
+ forUser: (args: ForUserBalanceQueriesArgs) => Promise<BalanceQuery[]>;
44
+ /**
45
+ * Discovers ERC-20 contracts touched by the calls that answer `balanceOf(from)`.
46
+ *
47
+ * This is the discovery half of `forUser`; map the returned addresses yourself when observing a
48
+ * different account.
49
+ *
50
+ * @throws AccessListUnsupportedError when the RPC endpoint cannot provide access lists.
51
+ * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
52
+ */
53
+ discoverErc20s: (args: ForUserBalanceQueriesArgs) => Promise<Address[]>;
54
+ };
55
+ readonly tokenOverrides: {
56
+ /**
57
+ * Prepares ERC-20 balance overrides for `from`.
58
+ *
59
+ * Each token is probed with RPC-only access lists and sentinel state overrides. Tokens the
60
+ * simulator cannot `deal` by verified storage write are returned in `unresolved` rather than
61
+ * thrown.
62
+ *
63
+ * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
64
+ */
65
+ forBalances: (args: PrepareBalanceOverridesArgs) => Promise<PreparedBalanceOverrides>;
66
+ /**
67
+ * Prepares ERC-20 allowance overrides for `from` and the requested token/spender pairs.
68
+ *
69
+ * Standard Solidity allowance layouts are inferred after one verified probe per token where
70
+ * possible; non-standard layouts fall back to per-pair probing. Pairs the simulator cannot
71
+ * `deal` via verified storage write are returned in `unresolved` rather than thrown.
72
+ *
73
+ * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides.
74
+ */
75
+ forAllowances: (args: PrepareAllowanceOverridesArgs) => Promise<PreparedAllowanceOverrides>;
76
+ /**
77
+ * Estimates the balances and approvals needed to execute the observed path.
78
+ *
79
+ * Use this when the tokens or spenders are not known ahead of time. Returned amounts are
80
+ * estimated under forged balances/allowances and should be padded before display or transaction
81
+ * assembly; unreliable measurements are reported under `unresolved`.
82
+ *
83
+ * @throws InvalidSimulationInputError when `calls` is empty.
84
+ * @throws AccessListUnsupportedError when the RPC endpoint cannot provide access lists.
85
+ * @throws StateOverrideUnsupportedError when the RPC endpoint cannot execute state overrides or
86
+ * returns undecodable simulator output.
87
+ */
88
+ estimateRequirements: (args: EstimateAssetRequirementsArgs) => Promise<EstimatedAssetRequirements>;
89
+ };
66
90
  }
67
91
  /** Factory for {@link TxSimulator} instances bound to one viem public client. */
68
92
  export declare const TxSimulator: {
@@ -1 +1 @@
1
- {"version":3,"file":"txSimulator.d.ts","sourceRoot":"","sources":["../src/txSimulator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EAEZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAQpB;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5D;;;;;;;;OAQG;IACH,uBAAuB,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAElG;;;;;;;;OAQG;IACH,yBAAyB,EAAE,CACzB,IAAI,EAAE,6BAA6B,KAChC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEzC;;;;;;;;;;;OAWG;IACH,yBAAyB,EAAE,CACzB,IAAI,EAAE,6BAA6B,KAChC,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC1C;AAED,iFAAiF;AACjF,eAAO,MAAM,WAAW;IACtB;;;;;;;;;;;OAWG;kBACW,iBAAiB,GAAG,WAAW;CA6B9C,CAAC"}
1
+ {"version":3,"file":"txSimulator.d.ts","sourceRoot":"","sources":["../src/txSimulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AASpC,OAAO,KAAK,EAEV,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EAEZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAQpB;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5D,QAAQ,CAAC,cAAc,EAAE;QACvB;;;;;;;;WAQG;QACH,OAAO,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAEtE;;;;;;;;WAQG;QACH,cAAc,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KACzE,CAAC;IAEF,QAAQ,CAAC,cAAc,EAAE;QACvB;;;;;;;;WAQG;QACH,WAAW,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEtF;;;;;;;;WAQG;QACH,aAAa,EAAE,CAAC,IAAI,EAAE,6BAA6B,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAE5F;;;;;;;;;;;WAWG;QACH,oBAAoB,EAAE,CACpB,IAAI,EAAE,6BAA6B,KAChC,OAAO,CAAC,0BAA0B,CAAC,CAAC;KAC1C,CAAC;CACH;AAED,iFAAiF;AACjF,eAAO,MAAM,WAAW;IACtB;;;;;;;;;;;OAWG;kBACW,iBAAiB,GAAG,WAAW;CAyC9C,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { DEFAULT_SIMULATION_GAS_LIMIT } from "./constants.js";
2
2
  import { InvalidSimulationInputError } from "./errors.js";
3
- import { estimateAssetRequirements } from "./internal/requirements.js";
3
+ import { discoverErc20s, forUserBalanceQueries } from "./internal/queryDiscovery.js";
4
+ import { estimateTokenOverrideRequirements } from "./internal/requirements.js";
4
5
  import { blockOptionsSpread } from "./internal/rpc.js";
5
- import { discoverCandidateAddresses, runSimulator } from "./internal/simulator.js";
6
- import { prepareAllowanceOverrides, prepareBalanceOverrides } from "./internal/slots.js";
6
+ import { runSimulator } from "./internal/simulator.js";
7
+ import { prepareAllowanceTokenOverrides, prepareBalanceTokenOverrides } from "./internal/slots.js";
7
8
  /** Factory for {@link TxSimulator} instances bound to one viem public client. */
8
9
  export const TxSimulator = {
9
10
  /**
@@ -36,9 +37,19 @@ export const TxSimulator = {
36
37
  };
37
38
  return {
38
39
  simulate: (args) => runSimulate({ ...args, ...revertDefaults(args), client: bound.client }),
39
- prepareBalanceOverrides: (args) => prepareBalanceOverrides({ ...args, ...defaults(args), client: bound.client }),
40
- prepareAllowanceOverrides: (args) => prepareAllowanceOverrides({ ...args, ...defaults(args), client: bound.client }),
41
- estimateAssetRequirements: (args) => estimateAssetRequirements({ ...args, ...revertDefaults(args), client: bound.client }),
40
+ balanceQueries: {
41
+ forUser: (args) => forUserBalanceQueries({ ...args, ...defaults(args), client: bound.client }),
42
+ discoverErc20s: (args) => discoverErc20s({ ...args, ...defaults(args), client: bound.client }),
43
+ },
44
+ tokenOverrides: {
45
+ forBalances: (args) => prepareBalanceTokenOverrides({ ...args, ...defaults(args), client: bound.client }),
46
+ forAllowances: (args) => prepareAllowanceTokenOverrides({ ...args, ...defaults(args), client: bound.client }),
47
+ estimateRequirements: (args) => estimateTokenOverrideRequirements({
48
+ ...args,
49
+ ...revertDefaults(args),
50
+ client: bound.client,
51
+ }),
52
+ },
42
53
  };
43
54
  },
44
55
  };
@@ -51,25 +62,66 @@ async function runSimulate(args) {
51
62
  data: call.data,
52
63
  value: call.value ?? 0n,
53
64
  }));
54
- const candidateAddresses = await discoverCandidateAddresses({
55
- client: args.client,
56
- from: args.from,
57
- calls,
58
- ...blockOptionsSpread(args),
59
- gas: args.gas,
60
- ...(args.debug !== undefined ? { debug: args.debug } : {}),
61
- });
62
65
  const tokenSlotOverrides = args.tokenSlotOverrides ?? [];
63
- return runSimulator({
66
+ const result = await runSimulator({
64
67
  client: args.client,
65
68
  from: args.from,
66
69
  calls,
67
- candidates: [...candidateAddresses, ...tokenSlotOverrides.map((slot) => slot.token)],
70
+ candidates: [],
68
71
  tokenSlotOverrides,
72
+ extraStateOverrides: (args.nativeBalanceOverrides ?? []).map((override) => ({
73
+ address: override.account,
74
+ balance: override.amount,
75
+ })),
76
+ balanceProbes: args.balanceQueries.map((query) => ({
77
+ token: query.asset,
78
+ account: query.account,
79
+ })),
69
80
  debug: args.debug,
70
81
  ...blockOptionsSpread(args),
71
82
  gas: args.gas,
72
83
  ...(args.errorAbi !== undefined ? { errorAbi: args.errorAbi } : {}),
73
84
  });
85
+ const balances = buildBalanceResults(args.balanceQueries, result.probeData, calls.length);
86
+ if (result.status === "reverted") {
87
+ return {
88
+ status: "reverted",
89
+ ...balances,
90
+ revertData: result.revertData,
91
+ ...(result.revertReason !== undefined ? { revertReason: result.revertReason } : {}),
92
+ ...(result.revertError !== undefined ? { revertError: result.revertError } : {}),
93
+ ...(result.revertSelector !== undefined ? { revertSelector: result.revertSelector } : {}),
94
+ failingCallIndex: result.failingCallIndex,
95
+ };
96
+ }
97
+ return { status: "success", ...balances };
98
+ }
99
+ function buildBalanceResults(queries, probeData, callsLength) {
100
+ const balanceDeltas = [];
101
+ const unresolved = [];
102
+ const stride = callsLength + 1;
103
+ for (let i = 0; i < queries.length; ++i) {
104
+ const query = queries[i];
105
+ if (query === undefined)
106
+ continue;
107
+ if (probeData.balanceProbeOk[i] !== true) {
108
+ unresolved.push(query);
109
+ continue;
110
+ }
111
+ const base = i * stride;
112
+ const before = probeData.balanceCheckpoints[base] ?? 0n;
113
+ const after = probeData.balanceCheckpoints[base + callsLength] ?? 0n;
114
+ const byCall = Array.from({ length: callsLength }, (_, callIndex) => (probeData.balanceCheckpoints[base + callIndex + 1] ?? 0n) -
115
+ (probeData.balanceCheckpoints[base + callIndex] ?? 0n));
116
+ balanceDeltas.push({
117
+ asset: query.asset,
118
+ account: query.account,
119
+ before,
120
+ after,
121
+ delta: after - before,
122
+ byCall,
123
+ });
124
+ }
125
+ return { balanceDeltas, unresolved };
74
126
  }
75
127
  //# sourceMappingURL=txSimulator.js.map