viem 2.19.9 → 2.20.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.
- package/CHANGELOG.md +18 -0
- package/_cjs/account-abstraction/accounts/toSmartAccount.js +4 -5
- package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +12 -9
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +14 -8
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/experimental/eip5792/actions/sendCalls.js +22 -7
- package/_cjs/experimental/eip5792/actions/sendCalls.js.map +1 -1
- package/_cjs/experimental/eip5792/actions/writeContracts.js.map +1 -1
- package/_cjs/op-stack/actions/getTimeToFinalize.js +7 -1
- package/_cjs/op-stack/actions/getTimeToFinalize.js.map +1 -1
- package/_cjs/op-stack/actions/getWithdrawalStatus.js +7 -1
- package/_cjs/op-stack/actions/getWithdrawalStatus.js.map +1 -1
- package/_esm/account-abstraction/accounts/toSmartAccount.js +4 -5
- package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +12 -9
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +14 -8
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/experimental/eip5792/actions/sendCalls.js +22 -7
- package/_esm/experimental/eip5792/actions/sendCalls.js.map +1 -1
- package/_esm/experimental/eip5792/actions/writeContracts.js +2 -0
- package/_esm/experimental/eip5792/actions/writeContracts.js.map +1 -1
- package/_esm/op-stack/actions/getTimeToFinalize.js +7 -1
- package/_esm/op-stack/actions/getTimeToFinalize.js.map +1 -1
- package/_esm/op-stack/actions/getWithdrawalStatus.js +7 -1
- package/_esm/op-stack/actions/getWithdrawalStatus.js.map +1 -1
- package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -1
- package/_types/account-abstraction/accounts/types.d.ts +3 -0
- package/_types/account-abstraction/accounts/types.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +6 -4
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +7 -5
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/eip5792/actions/sendCalls.d.ts +33 -12
- package/_types/experimental/eip5792/actions/sendCalls.d.ts.map +1 -1
- package/_types/experimental/eip5792/actions/writeContracts.d.ts +2 -0
- package/_types/experimental/eip5792/actions/writeContracts.d.ts.map +1 -1
- package/_types/op-stack/actions/getTimeToFinalize.d.ts.map +1 -1
- package/_types/op-stack/actions/getWithdrawalStatus.d.ts.map +1 -1
- package/_types/types/eip1193.d.ts +6 -6
- package/_types/types/eip1193.d.ts.map +1 -1
- package/account-abstraction/accounts/toSmartAccount.ts +12 -10
- package/account-abstraction/accounts/types.ts +3 -0
- package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +53 -32
- package/account-abstraction/actions/bundler/sendUserOperation.ts +50 -33
- package/errors/version.ts +1 -1
- package/experimental/eip5792/actions/sendCalls.ts +107 -21
- package/experimental/eip5792/actions/writeContracts.ts +2 -0
- package/op-stack/actions/getTimeToFinalize.ts +8 -1
- package/op-stack/actions/getWithdrawalStatus.ts +8 -1
- package/package.json +1 -1
- package/types/eip1193.ts +8 -11
@@ -10,7 +10,12 @@ import type { BaseError } from '../../../errors/base.js'
|
|
10
10
|
import type { ErrorType } from '../../../errors/utils.js'
|
11
11
|
import type { Chain } from '../../../types/chain.js'
|
12
12
|
import type { Hex } from '../../../types/misc.js'
|
13
|
-
import type {
|
13
|
+
import type {
|
14
|
+
Assign,
|
15
|
+
MaybeRequired,
|
16
|
+
OneOf,
|
17
|
+
Prettify,
|
18
|
+
} from '../../../types/utils.js'
|
14
19
|
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
15
20
|
import { getAction } from '../../../utils/getAction.js'
|
16
21
|
import type { SmartAccount } from '../../accounts/types.js'
|
@@ -55,26 +60,39 @@ export type EstimateUserOperationGasParameters<
|
|
55
60
|
>,
|
56
61
|
_derivedVersion extends
|
57
62
|
EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
|
58
|
-
> =
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
|
63
|
+
> = GetSmartAccountParameter<account, accountOverride, false> &
|
64
|
+
(
|
65
|
+
| UserOperation // Accept a full-formed User Operation.
|
66
|
+
| Assign<
|
67
|
+
// Accept a partially-formed User Operation (UserOperationRequest) to be filled.
|
68
|
+
UserOperationRequest<_derivedVersion>,
|
69
|
+
OneOf<
|
70
|
+
{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }
|
71
|
+
> & {
|
72
|
+
paymaster?:
|
73
|
+
| Address
|
74
|
+
| true
|
75
|
+
| {
|
76
|
+
/** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
|
77
|
+
getPaymasterData?:
|
78
|
+
| PaymasterActions['getPaymasterData']
|
79
|
+
| undefined
|
80
|
+
/** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
|
81
|
+
getPaymasterStubData?:
|
82
|
+
| PaymasterActions['getPaymasterStubData']
|
83
|
+
| undefined
|
84
|
+
}
|
70
85
|
| undefined
|
86
|
+
/** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
|
87
|
+
paymasterContext?: unknown | undefined
|
71
88
|
}
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
89
|
+
>
|
90
|
+
) &
|
91
|
+
// Allow the EntryPoint address to be overridden, if no Account is provided, it will need to be required.
|
92
|
+
MaybeRequired<
|
93
|
+
{ entryPointAddress?: Address },
|
94
|
+
_derivedAccount extends undefined ? true : false
|
95
|
+
>
|
78
96
|
|
79
97
|
export type EstimateUserOperationGasReturnType<
|
80
98
|
account extends SmartAccount | undefined = SmartAccount | undefined,
|
@@ -135,26 +153,28 @@ export async function estimateUserOperationGas<
|
|
135
153
|
calls
|
136
154
|
>,
|
137
155
|
): Promise<EstimateUserOperationGasReturnType<account, accountOverride>> {
|
138
|
-
const { account: account_ = client.account } = parameters
|
156
|
+
const { account: account_ = client.account, entryPointAddress } = parameters
|
139
157
|
|
140
|
-
if (!account_) throw new AccountNotFoundError()
|
141
|
-
const account = parseAccount(account_)
|
158
|
+
if (!account_ && !parameters.sender) throw new AccountNotFoundError()
|
159
|
+
const account = account_ ? parseAccount(account_) : undefined
|
142
160
|
|
143
|
-
const request =
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
161
|
+
const request = account
|
162
|
+
? await getAction(
|
163
|
+
client,
|
164
|
+
prepareUserOperation,
|
165
|
+
'prepareUserOperation',
|
166
|
+
)({
|
167
|
+
...parameters,
|
168
|
+
parameters: ['factory', 'nonce', 'paymaster', 'signature'],
|
169
|
+
} as unknown as PrepareUserOperationParameters)
|
170
|
+
: parameters
|
151
171
|
|
152
172
|
try {
|
153
173
|
const result = await client.request({
|
154
174
|
method: 'eth_estimateUserOperationGas',
|
155
175
|
params: [
|
156
176
|
formatUserOperationRequest(request as UserOperation),
|
157
|
-
account
|
177
|
+
(entryPointAddress ?? account?.entryPoint?.address)!,
|
158
178
|
],
|
159
179
|
})
|
160
180
|
return formatUserOperationGas(result) as EstimateUserOperationGasReturnType<
|
@@ -162,9 +182,10 @@ export async function estimateUserOperationGas<
|
|
162
182
|
accountOverride
|
163
183
|
>
|
164
184
|
} catch (error) {
|
185
|
+
const calls = (parameters as any).calls
|
165
186
|
throw getUserOperationError(error as BaseError, {
|
166
187
|
...(request as UserOperation),
|
167
|
-
calls:
|
188
|
+
...(calls ? { calls } : {}),
|
168
189
|
})
|
169
190
|
}
|
170
191
|
}
|
@@ -7,7 +7,7 @@ import type { BaseError } from '../../../errors/base.js'
|
|
7
7
|
import type { ErrorType } from '../../../errors/utils.js'
|
8
8
|
import type { Chain } from '../../../types/chain.js'
|
9
9
|
import type { Hex } from '../../../types/misc.js'
|
10
|
-
import type { Assign, OneOf } from '../../../types/utils.js'
|
10
|
+
import type { Assign, MaybeRequired, OneOf } from '../../../types/utils.js'
|
11
11
|
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
12
12
|
import { getAction } from '../../../utils/getAction.js'
|
13
13
|
import type { SmartAccount } from '../../accounts/types.js'
|
@@ -47,27 +47,39 @@ export type SendUserOperationParameters<
|
|
47
47
|
>,
|
48
48
|
_derivedVersion extends
|
49
49
|
EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
|
50
|
-
> =
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
|
50
|
+
> = GetSmartAccountParameter<account, accountOverride, false> &
|
51
|
+
(
|
52
|
+
| UserOperation // Accept a full-formed User Operation.
|
53
|
+
| Assign<
|
54
|
+
// Accept a partially-formed User Operation (UserOperationRequest) to be filled.
|
55
|
+
UserOperationRequest<_derivedVersion>,
|
56
|
+
OneOf<
|
57
|
+
{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }
|
58
|
+
> & {
|
59
|
+
paymaster?:
|
60
|
+
| Address
|
61
|
+
| true
|
62
|
+
| {
|
63
|
+
/** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
|
64
|
+
getPaymasterData?:
|
65
|
+
| PaymasterActions['getPaymasterData']
|
66
|
+
| undefined
|
67
|
+
/** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
|
68
|
+
getPaymasterStubData?:
|
69
|
+
| PaymasterActions['getPaymasterStubData']
|
70
|
+
| undefined
|
71
|
+
}
|
62
72
|
| undefined
|
73
|
+
/** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
|
74
|
+
paymasterContext?: unknown | undefined
|
63
75
|
}
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
>
|
77
|
+
) &
|
78
|
+
// Allow the EntryPoint address to be overridden, if no Account is provided, it will need to be required.
|
79
|
+
MaybeRequired<
|
80
|
+
{ entryPointAddress?: Address },
|
81
|
+
_derivedAccount extends undefined ? true : false
|
82
|
+
>
|
71
83
|
export type SendUserOperationReturnType = Hex
|
72
84
|
|
73
85
|
export type SendUserOperationErrorType =
|
@@ -111,20 +123,21 @@ export async function sendUserOperation<
|
|
111
123
|
client: Client<Transport, Chain | undefined, account>,
|
112
124
|
parameters: SendUserOperationParameters<account, accountOverride, calls>,
|
113
125
|
) {
|
114
|
-
const { account: account_ = client.account } = parameters
|
126
|
+
const { account: account_ = client.account, entryPointAddress } = parameters
|
115
127
|
|
116
|
-
if (!account_) throw new AccountNotFoundError()
|
117
|
-
const account = parseAccount(account_)
|
128
|
+
if (!account_ && !parameters.sender) throw new AccountNotFoundError()
|
129
|
+
const account = account_ ? parseAccount(account_) : undefined
|
118
130
|
|
119
|
-
const request =
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
131
|
+
const request = account
|
132
|
+
? await getAction(
|
133
|
+
client,
|
134
|
+
prepareUserOperation,
|
135
|
+
'prepareUserOperation',
|
136
|
+
)(parameters as unknown as PrepareUserOperationParameters)
|
137
|
+
: parameters
|
124
138
|
|
125
|
-
const signature =
|
126
|
-
|
127
|
-
(await account.signUserOperation(request as UserOperation))
|
139
|
+
const signature = (parameters.signature ||
|
140
|
+
(await account?.signUserOperation(request as UserOperation)))!
|
128
141
|
|
129
142
|
const rpcParameters = formatUserOperationRequest({
|
130
143
|
...request,
|
@@ -135,14 +148,18 @@ export async function sendUserOperation<
|
|
135
148
|
return await client.request(
|
136
149
|
{
|
137
150
|
method: 'eth_sendUserOperation',
|
138
|
-
params: [
|
151
|
+
params: [
|
152
|
+
rpcParameters,
|
153
|
+
(entryPointAddress ?? account?.entryPoint.address)!,
|
154
|
+
],
|
139
155
|
},
|
140
156
|
{ retryCount: 0 },
|
141
157
|
)
|
142
158
|
} catch (error) {
|
159
|
+
const calls = (parameters as any).calls
|
143
160
|
throw getUserOperationError(error as BaseError, {
|
144
161
|
...(request as UserOperation),
|
145
|
-
calls:
|
162
|
+
...(calls ? { calls } : {}),
|
146
163
|
signature,
|
147
164
|
})
|
148
165
|
}
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.
|
1
|
+
export const version = '2.20.0'
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { AbiStateMutability, Address, Narrow } from 'abitype'
|
1
2
|
import { parseAccount } from '../../../accounts/utils/parseAccount.js'
|
2
3
|
import type { Client } from '../../../clients/createClient.js'
|
3
4
|
import type { Transport } from '../../../clients/transports/createTransport.js'
|
@@ -6,13 +7,16 @@ import type { BaseError } from '../../../errors/base.js'
|
|
6
7
|
import { ChainNotFoundError } from '../../../errors/chain.js'
|
7
8
|
import type { ErrorType } from '../../../errors/utils.js'
|
8
9
|
import type { Account, GetAccountParameter } from '../../../types/account.js'
|
9
|
-
import type { Chain,
|
10
|
+
import type { Chain, DeriveChain } from '../../../types/chain.js'
|
11
|
+
import type { ContractFunctionParameters } from '../../../types/contract.js'
|
10
12
|
import type {
|
11
13
|
WalletCapabilities,
|
12
14
|
WalletSendCallsParameters,
|
13
15
|
} from '../../../types/eip1193.js'
|
14
16
|
import type { Hex } from '../../../types/misc.js'
|
15
|
-
import type {
|
17
|
+
import type { GetMulticallContractParameters } from '../../../types/multicall.js'
|
18
|
+
import type { MaybeRequired, OneOf, Prettify } from '../../../types/utils.js'
|
19
|
+
import { encodeFunctionData } from '../../../utils/abi/encodeFunctionData.js'
|
16
20
|
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
17
21
|
import { numberToHex } from '../../../utils/encoding/toHex.js'
|
18
22
|
import { getTransactionError } from '../../../utils/errors/getTransactionError.js'
|
@@ -21,23 +25,17 @@ export type SendCallsParameters<
|
|
21
25
|
chain extends Chain | undefined = Chain | undefined,
|
22
26
|
account extends Account | undefined = Account | undefined,
|
23
27
|
chainOverride extends Chain | undefined = Chain | undefined,
|
28
|
+
calls extends readonly unknown[] = readonly unknown[],
|
29
|
+
//
|
30
|
+
_chain extends Chain | undefined = DeriveChain<chain, chainOverride>,
|
24
31
|
> = {
|
25
|
-
|
26
|
-
|
27
|
-
to: Hex
|
28
|
-
data?: Hex | undefined
|
29
|
-
value?: bigint | undefined
|
30
|
-
}
|
31
|
-
| {
|
32
|
-
data: Hex
|
33
|
-
}
|
34
|
-
>[]
|
32
|
+
chain?: chainOverride | Chain | undefined
|
33
|
+
calls: Calls<Narrow<calls>, _chain>
|
35
34
|
capabilities?:
|
36
35
|
| WalletSendCallsParameters<WalletCapabilities>[number]['capabilities']
|
37
36
|
| undefined
|
38
37
|
version?: WalletSendCallsParameters[number]['version'] | undefined
|
39
|
-
} & GetAccountParameter<account>
|
40
|
-
GetChainParameter<chain, chainOverride>
|
38
|
+
} & GetAccountParameter<account>
|
41
39
|
|
42
40
|
export type SendCallsReturnType = string
|
43
41
|
|
@@ -76,16 +74,16 @@ export type SendCallsErrorType = RequestErrorType | ErrorType
|
|
76
74
|
* })
|
77
75
|
*/
|
78
76
|
export async function sendCalls<
|
77
|
+
const calls extends readonly unknown[],
|
79
78
|
chain extends Chain | undefined,
|
80
79
|
account extends Account | undefined = undefined,
|
81
80
|
chainOverride extends Chain | undefined = undefined,
|
82
81
|
>(
|
83
82
|
client: Client<Transport, chain, account>,
|
84
|
-
parameters: SendCallsParameters<chain, account, chainOverride>,
|
83
|
+
parameters: SendCallsParameters<chain, account, chainOverride, calls>,
|
85
84
|
): Promise<SendCallsReturnType> {
|
86
85
|
const {
|
87
86
|
account: account_ = client.account,
|
88
|
-
calls,
|
89
87
|
capabilities,
|
90
88
|
chain = client.chain,
|
91
89
|
version = '1.0',
|
@@ -97,7 +95,27 @@ export async function sendCalls<
|
|
97
95
|
})
|
98
96
|
const account = parseAccount(account_)
|
99
97
|
|
100
|
-
|
98
|
+
const calls = parameters.calls.map((call_: unknown) => {
|
99
|
+
const call = call_ as Call
|
100
|
+
|
101
|
+
const chainId = call.chain?.id ?? call.chainId ?? chain?.id
|
102
|
+
if (!chainId) throw new ChainNotFoundError()
|
103
|
+
|
104
|
+
const data = call.abi
|
105
|
+
? encodeFunctionData({
|
106
|
+
abi: call.abi,
|
107
|
+
functionName: call.functionName,
|
108
|
+
args: call.args,
|
109
|
+
})
|
110
|
+
: call.data
|
111
|
+
|
112
|
+
return {
|
113
|
+
chainId: numberToHex(chainId),
|
114
|
+
data,
|
115
|
+
to: call.to,
|
116
|
+
value: call.value ? numberToHex(call.value) : undefined,
|
117
|
+
}
|
118
|
+
})
|
101
119
|
|
102
120
|
try {
|
103
121
|
return await client.request(
|
@@ -105,10 +123,7 @@ export async function sendCalls<
|
|
105
123
|
method: 'wallet_sendCalls',
|
106
124
|
params: [
|
107
125
|
{
|
108
|
-
calls
|
109
|
-
...call,
|
110
|
-
value: call.value ? numberToHex(call.value) : undefined,
|
111
|
-
})) as any,
|
126
|
+
calls,
|
112
127
|
capabilities,
|
113
128
|
chainId: numberToHex(chain!.id),
|
114
129
|
from: account.address,
|
@@ -126,3 +141,74 @@ export async function sendCalls<
|
|
126
141
|
})
|
127
142
|
}
|
128
143
|
}
|
144
|
+
|
145
|
+
///////////////////////////////////////////////////////////////////////////////////////////////////
|
146
|
+
|
147
|
+
type RawCall = { data?: Hex; to?: Address; value?: bigint }
|
148
|
+
|
149
|
+
type Call<
|
150
|
+
chain extends Chain | undefined = Chain | undefined,
|
151
|
+
contractFunctionParameters = Omit<ContractFunctionParameters, 'address'>,
|
152
|
+
> = OneOf<
|
153
|
+
| (contractFunctionParameters & {
|
154
|
+
to: Address
|
155
|
+
value?: bigint | undefined
|
156
|
+
})
|
157
|
+
| RawCall
|
158
|
+
> &
|
159
|
+
OneOf<
|
160
|
+
| MaybeRequired<
|
161
|
+
{ chain?: Chain | undefined },
|
162
|
+
chain extends Chain ? false : true
|
163
|
+
>
|
164
|
+
| MaybeRequired<{ chainId?: number }, chain extends Chain ? false : true>
|
165
|
+
>
|
166
|
+
|
167
|
+
type Calls<
|
168
|
+
calls extends readonly unknown[],
|
169
|
+
chain extends Chain | undefined,
|
170
|
+
///
|
171
|
+
result extends readonly any[] = [],
|
172
|
+
> = calls extends readonly [] // no calls, return empty
|
173
|
+
? readonly []
|
174
|
+
: calls extends readonly [infer call] // one call left before returning `result`
|
175
|
+
? readonly [
|
176
|
+
...result,
|
177
|
+
Prettify<
|
178
|
+
Call<
|
179
|
+
chain,
|
180
|
+
Omit<
|
181
|
+
GetMulticallContractParameters<call, AbiStateMutability>,
|
182
|
+
'address'
|
183
|
+
>
|
184
|
+
>
|
185
|
+
>,
|
186
|
+
]
|
187
|
+
: calls extends readonly [infer call, ...infer rest] // grab first call and recurse through `rest`
|
188
|
+
? Calls<
|
189
|
+
[...rest],
|
190
|
+
chain,
|
191
|
+
[
|
192
|
+
...result,
|
193
|
+
Prettify<
|
194
|
+
Call<
|
195
|
+
chain,
|
196
|
+
Omit<
|
197
|
+
GetMulticallContractParameters<call, AbiStateMutability>,
|
198
|
+
'address'
|
199
|
+
>
|
200
|
+
>
|
201
|
+
>,
|
202
|
+
]
|
203
|
+
>
|
204
|
+
: readonly unknown[] extends calls
|
205
|
+
? calls
|
206
|
+
: // If `calls` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
|
207
|
+
// use this to infer the param types in the case of Array.map() argument
|
208
|
+
calls extends readonly (infer call extends Call<
|
209
|
+
chain,
|
210
|
+
Omit<ContractFunctionParameters, 'address'>
|
211
|
+
>)[]
|
212
|
+
? readonly Prettify<call>[]
|
213
|
+
: // Fallback
|
214
|
+
readonly Call<chain, Omit<ContractFunctionParameters, 'address'>>[]
|
@@ -50,6 +50,8 @@ export type WriteContractsErrorType =
|
|
50
50
|
| ErrorType
|
51
51
|
|
52
52
|
/**
|
53
|
+
* @deprecated Use {@link sendCalls} instead. See https://viem.sh/experimental/eip5792/sendCalls#contract-calls.
|
54
|
+
*
|
53
55
|
* Requests for the wallet to sign and broadcast a batch of write contract calls (transactions) to the network.
|
54
56
|
*
|
55
57
|
* - Docs: https://viem.sh/experimental/eip5792/writeContracts
|
@@ -128,11 +128,18 @@ export async function getTimeToFinalize<
|
|
128
128
|
return { period: Number(period), seconds, timestamp }
|
129
129
|
}
|
130
130
|
|
131
|
+
const numProofSubmitters = await readContract(client, {
|
132
|
+
abi: portal2Abi,
|
133
|
+
address: portalAddress,
|
134
|
+
functionName: 'numProofSubmitters',
|
135
|
+
args: [withdrawalHash],
|
136
|
+
}).catch(() => 1n)
|
137
|
+
|
131
138
|
const proofSubmitter = await readContract(client, {
|
132
139
|
abi: portal2Abi,
|
133
140
|
address: portalAddress,
|
134
141
|
functionName: 'proofSubmitters',
|
135
|
-
args: [withdrawalHash,
|
142
|
+
args: [withdrawalHash, numProofSubmitters - 1n],
|
136
143
|
}).catch(() => undefined)
|
137
144
|
|
138
145
|
const [[_disputeGameProxy, proveTimestamp], proofMaturityDelaySeconds] =
|
@@ -197,11 +197,18 @@ export async function getWithdrawalStatus<
|
|
197
197
|
return seconds > 0 ? 'waiting-to-finalize' : 'ready-to-finalize'
|
198
198
|
}
|
199
199
|
|
200
|
+
const numProofSubmitters = await readContract(client, {
|
201
|
+
abi: portal2Abi,
|
202
|
+
address: portalAddress,
|
203
|
+
functionName: 'numProofSubmitters',
|
204
|
+
args: [withdrawal.withdrawalHash],
|
205
|
+
}).catch(() => 1n)
|
206
|
+
|
200
207
|
const proofSubmitter = await readContract(client, {
|
201
208
|
abi: portal2Abi,
|
202
209
|
address: portalAddress,
|
203
210
|
functionName: 'proofSubmitters',
|
204
|
-
args: [withdrawal.withdrawalHash,
|
211
|
+
args: [withdrawal.withdrawalHash, numProofSubmitters - 1n],
|
205
212
|
}).catch(() => withdrawal.sender)
|
206
213
|
|
207
214
|
const [disputeGameResult, checkWithdrawalResult, finalizedResult] =
|
package/package.json
CHANGED
package/types/eip1193.ts
CHANGED
@@ -207,18 +207,15 @@ export type WalletSendCallsParameters<
|
|
207
207
|
quantity extends Quantity | bigint = Quantity,
|
208
208
|
> = [
|
209
209
|
{
|
210
|
-
calls:
|
211
|
-
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
| {
|
217
|
-
data: Hex
|
218
|
-
}
|
219
|
-
>[]
|
210
|
+
calls: readonly {
|
211
|
+
chainId?: chainId | undefined
|
212
|
+
to?: Address | undefined
|
213
|
+
data?: Hex | undefined
|
214
|
+
value?: quantity | undefined
|
215
|
+
}[]
|
220
216
|
capabilities?: capabilities | undefined
|
221
|
-
chainId
|
217
|
+
/** @deprecated Use `chainId` on `calls` instead. */
|
218
|
+
chainId?: chainId | undefined
|
222
219
|
from: Address
|
223
220
|
version: string
|
224
221
|
},
|