@@ -42,12 +42,12 @@ export type SimulateCallsParameters<
42
42
> = Omit < SimulateBlocksParameters , 'blocks' | 'returnFullTransactions' > & {
43
43
/** Account attached to the calls (msg.sender). */
44
44
account ?: account | undefined
45
- /** Whether to trace asset changes. */
46
- assetChanges ?: boolean | undefined
47
45
/** Calls to simulate. */
48
46
calls : Calls < Narrow < calls > >
49
47
/** State overrides. */
50
48
stateOverrides ?: StateOverride | undefined
49
+ /** Whether to trace asset changes. */
50
+ traceAssetChanges ?: boolean | undefined
51
51
}
52
52
53
53
export type SimulateCallsReturnType <
@@ -57,8 +57,8 @@ export type SimulateCallsReturnType<
57
57
assetChanges : readonly {
58
58
token : {
59
59
address : Address
60
- decimals : number
61
- symbol : string
60
+ decimals ? : number | undefined
61
+ symbol ? : string | undefined
62
62
}
63
63
value : { pre : bigint ; post : bigint ; diff : bigint }
64
64
} [ ]
@@ -130,11 +130,11 @@ export async function simulateCalls<
130
130
parameters : SimulateCallsParameters < calls , account > ,
131
131
) : Promise < SimulateCallsReturnType < calls > > {
132
132
const {
133
- assetChanges,
134
133
blockNumber,
135
134
blockTag,
136
135
calls,
137
136
stateOverrides,
137
+ traceAssetChanges,
138
138
traceTransfers,
139
139
validation,
140
140
} = parameters
@@ -143,8 +143,10 @@ export async function simulateCalls<
143
143
? parseAccount ( parameters . account )
144
144
: undefined
145
145
146
- if ( assetChanges && ! account )
147
- throw new BaseError ( '`account` is required when `assetChanges` is true' )
146
+ if ( traceAssetChanges && ! account )
147
+ throw new BaseError (
148
+ '`account` is required when `traceAssetChanges` is true' ,
149
+ )
148
150
149
151
// Derive bytecode to extract ETH balance via a contract call.
150
152
const getBalanceData = account
@@ -161,7 +163,7 @@ export async function simulateCalls<
161
163
: undefined
162
164
163
165
// Fetch ERC20/721 addresses that were "touched" from the calls.
164
- const assetAddresses = assetChanges
166
+ const assetAddresses = traceAssetChanges
165
167
? await Promise . all (
166
168
parameters . calls . map ( async ( call : any ) => {
167
169
if ( ! call . data && ! call . abi ) return
@@ -190,7 +192,7 @@ export async function simulateCalls<
190
192
blockNumber,
191
193
blockTag : blockTag as undefined ,
192
194
blocks : [
193
- ...( assetChanges
195
+ ...( traceAssetChanges
194
196
? [
195
197
// ETH pre balances
196
198
{
@@ -231,7 +233,7 @@ export async function simulateCalls<
231
233
stateOverrides : resultsStateOverrides ,
232
234
} ,
233
235
234
- ...( assetChanges
236
+ ...( traceAssetChanges
235
237
? [
236
238
// ETH post balances
237
239
{
@@ -324,7 +326,7 @@ export async function simulateCalls<
324
326
validation,
325
327
} )
326
328
327
- const block_results = assetChanges ? blocks [ 2 ] : blocks [ 0 ]
329
+ const block_results = traceAssetChanges ? blocks [ 2 ] : blocks [ 0 ]
328
330
const [
329
331
block_ethPre ,
330
332
block_assetsPre ,
@@ -334,7 +336,7 @@ export async function simulateCalls<
334
336
block_decimals ,
335
337
block_tokenURI ,
336
338
block_symbols ,
337
- ] = assetChanges ? blocks : [ ]
339
+ ] = traceAssetChanges ? blocks : [ ]
338
340
339
341
// Extract call results from the simulation.
340
342
const { calls : block_calls , ...block } = block_results
@@ -383,14 +385,11 @@ export async function simulateCalls<
383
385
decimals : 18 ,
384
386
symbol : 'ETH' ,
385
387
}
386
- if ( ( ! decimals_ && ! tokenURI_ ) || ! symbol_ )
387
- throw new BaseError (
388
- 'cannot simulate asset changes. asset does not comply with ERC20 or ERC721 standard.' ,
389
- )
388
+
390
389
return {
391
390
address : assetAddresses [ i - 1 ] ! as Address ,
392
- decimals : Number ( decimals_ ?? 1 ) ,
393
- symbol : symbol_ ,
391
+ decimals : tokenURI_ || decimals_ ? Number ( decimals_ ?? 1 ) : undefined ,
392
+ symbol : symbol_ ?? undefined ,
394
393
}
395
394
} ) ( )
396
395
0 commit comments