viem 2.23.11 → 2.23.12

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 (102) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/_cjs/chains/definitions/basecampTestnet.js +24 -0
  3. package/_cjs/chains/definitions/basecampTestnet.js.map +1 -0
  4. package/_cjs/chains/definitions/happychainTestnet.js +3 -3
  5. package/_cjs/chains/definitions/happychainTestnet.js.map +1 -1
  6. package/_cjs/chains/definitions/somniaTestnet.js +23 -0
  7. package/_cjs/chains/definitions/somniaTestnet.js.map +1 -0
  8. package/_cjs/chains/index.js +16 -12
  9. package/_cjs/chains/index.js.map +1 -1
  10. package/_cjs/errors/version.js +1 -1
  11. package/_cjs/experimental/eip5792/actions/waitForCallsStatus.js +52 -0
  12. package/_cjs/experimental/eip5792/actions/waitForCallsStatus.js.map +1 -0
  13. package/_cjs/experimental/eip5792/decorators/eip5792.js +2 -0
  14. package/_cjs/experimental/eip5792/decorators/eip5792.js.map +1 -1
  15. package/_cjs/experimental/index.js +4 -1
  16. package/_cjs/experimental/index.js.map +1 -1
  17. package/_cjs/utils/ccip.js +1 -1
  18. package/_cjs/utils/ccip.js.map +1 -1
  19. package/_cjs/utils/formatters/transactionRequest.js +6 -2
  20. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  21. package/_cjs/zksync/actions/isWithdrawalFinalized.js +50 -0
  22. package/_cjs/zksync/actions/isWithdrawalFinalized.js.map +1 -0
  23. package/_cjs/zksync/decorators/publicL1.js +2 -0
  24. package/_cjs/zksync/decorators/publicL1.js.map +1 -1
  25. package/_cjs/zksync/index.js +4 -2
  26. package/_cjs/zksync/index.js.map +1 -1
  27. package/_cjs/zksync/serializers.js +1 -1
  28. package/_cjs/zksync/serializers.js.map +1 -1
  29. package/_esm/chains/definitions/basecampTestnet.js +21 -0
  30. package/_esm/chains/definitions/basecampTestnet.js.map +1 -0
  31. package/_esm/chains/definitions/happychainTestnet.js +3 -3
  32. package/_esm/chains/definitions/happychainTestnet.js.map +1 -1
  33. package/_esm/chains/definitions/somniaTestnet.js +20 -0
  34. package/_esm/chains/definitions/somniaTestnet.js.map +1 -0
  35. package/_esm/chains/index.js +2 -0
  36. package/_esm/chains/index.js.map +1 -1
  37. package/_esm/errors/version.js +1 -1
  38. package/_esm/experimental/eip5792/actions/getCallsStatus.js +1 -1
  39. package/_esm/experimental/eip5792/actions/getCapabilities.js +1 -1
  40. package/_esm/experimental/eip5792/actions/sendCalls.js +1 -1
  41. package/_esm/experimental/eip5792/actions/showCallsStatus.js +1 -1
  42. package/_esm/experimental/eip5792/actions/waitForCallsStatus.js +69 -0
  43. package/_esm/experimental/eip5792/actions/waitForCallsStatus.js.map +1 -0
  44. package/_esm/experimental/eip5792/decorators/eip5792.js +2 -0
  45. package/_esm/experimental/eip5792/decorators/eip5792.js.map +1 -1
  46. package/_esm/experimental/index.js +1 -0
  47. package/_esm/experimental/index.js.map +1 -1
  48. package/_esm/utils/ccip.js +1 -1
  49. package/_esm/utils/ccip.js.map +1 -1
  50. package/_esm/utils/formatters/transactionRequest.js +6 -2
  51. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  52. package/_esm/zksync/actions/isWithdrawalFinalized.js +77 -0
  53. package/_esm/zksync/actions/isWithdrawalFinalized.js.map +1 -0
  54. package/_esm/zksync/decorators/publicL1.js +2 -0
  55. package/_esm/zksync/decorators/publicL1.js.map +1 -1
  56. package/_esm/zksync/index.js +1 -0
  57. package/_esm/zksync/index.js.map +1 -1
  58. package/_esm/zksync/serializers.js +1 -1
  59. package/_esm/zksync/serializers.js.map +1 -1
  60. package/_types/chains/definitions/basecampTestnet.d.ts +37 -0
  61. package/_types/chains/definitions/basecampTestnet.d.ts.map +1 -0
  62. package/_types/chains/definitions/happychainTestnet.d.ts +3 -3
  63. package/_types/chains/definitions/somniaTestnet.d.ts +38 -0
  64. package/_types/chains/definitions/somniaTestnet.d.ts.map +1 -0
  65. package/_types/chains/index.d.ts +2 -0
  66. package/_types/chains/index.d.ts.map +1 -1
  67. package/_types/errors/version.d.ts +1 -1
  68. package/_types/experimental/eip5792/actions/getCallsStatus.d.ts +1 -1
  69. package/_types/experimental/eip5792/actions/getCapabilities.d.ts +1 -1
  70. package/_types/experimental/eip5792/actions/sendCalls.d.ts +1 -1
  71. package/_types/experimental/eip5792/actions/showCallsStatus.d.ts +1 -1
  72. package/_types/experimental/eip5792/actions/waitForCallsStatus.d.ts +68 -0
  73. package/_types/experimental/eip5792/actions/waitForCallsStatus.d.ts.map +1 -0
  74. package/_types/experimental/eip5792/decorators/eip5792.d.ts +24 -0
  75. package/_types/experimental/eip5792/decorators/eip5792.d.ts.map +1 -1
  76. package/_types/experimental/index.d.ts +1 -0
  77. package/_types/experimental/index.d.ts.map +1 -1
  78. package/_types/zksync/actions/isWithdrawalFinalized.d.ts +48 -0
  79. package/_types/zksync/actions/isWithdrawalFinalized.d.ts.map +1 -0
  80. package/_types/zksync/decorators/publicL1.d.ts +29 -0
  81. package/_types/zksync/decorators/publicL1.d.ts.map +1 -1
  82. package/_types/zksync/index.d.ts +1 -0
  83. package/_types/zksync/index.d.ts.map +1 -1
  84. package/chains/definitions/basecampTestnet.ts +21 -0
  85. package/chains/definitions/happychainTestnet.ts +3 -3
  86. package/chains/definitions/somniaTestnet.ts +20 -0
  87. package/chains/index.ts +2 -0
  88. package/errors/version.ts +1 -1
  89. package/experimental/eip5792/actions/getCallsStatus.ts +1 -1
  90. package/experimental/eip5792/actions/getCapabilities.ts +1 -1
  91. package/experimental/eip5792/actions/sendCalls.ts +1 -1
  92. package/experimental/eip5792/actions/showCallsStatus.ts +1 -1
  93. package/experimental/eip5792/actions/waitForCallsStatus.ts +137 -0
  94. package/experimental/eip5792/decorators/eip5792.ts +32 -0
  95. package/experimental/index.ts +8 -0
  96. package/package.json +1 -1
  97. package/utils/ccip.ts +1 -1
  98. package/utils/formatters/transactionRequest.ts +6 -2
  99. package/zksync/actions/isWithdrawalFinalized.ts +122 -0
  100. package/zksync/decorators/publicL1.ts +36 -0
  101. package/zksync/index.ts +6 -0
  102. package/zksync/serializers.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../zksync/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../zksync/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const basecampTestnet = /*#__PURE__*/ defineChain({
4
+ id: 123420001114,
5
+ name: 'Basecamp Testnet',
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: 'Camp',
9
+ symbol: 'CAMP',
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://rpc.basecamp.t.raas.gelato.cloud'] },
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'basecamp',
17
+ url: 'https://basecamp.cloud.blockscout.com',
18
+ },
19
+ },
20
+ testnet: true,
21
+ })
@@ -10,14 +10,14 @@ export const happychainTestnet = /*#__PURE__*/ defineChain({
10
10
  },
11
11
  rpcUrls: {
12
12
  default: {
13
- http: ['https://happy-testnet-sepolia.rpc.caldera.xyz/http'],
14
- webSocket: ['wss://happy-testnet-sepolia.rpc.caldera.xyz/ws'],
13
+ http: ['https://rpc.testnet.happy.tech/http'],
14
+ webSocket: ['wss://rpc.testnet.happy.tech/ws'],
15
15
  },
16
16
  },
17
17
  blockExplorers: {
18
18
  default: {
19
19
  name: 'Happy Chain Testnet Explorer',
20
- url: 'https://happy-testnet-sepolia.explorer.caldera.xyz/',
20
+ url: 'https://explorer.testnet.happy.tech',
21
21
  },
22
22
  },
23
23
  contracts: {
@@ -0,0 +1,20 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const somniaTestnet = /*#__PURE__*/ defineChain({
4
+ id: 50312,
5
+ name: 'Somnia Testnet',
6
+ nativeCurrency: { name: 'STT', symbol: 'STT', decimals: 18 },
7
+ rpcUrls: {
8
+ default: {
9
+ http: ['https://dream-rpc.somnia.network'],
10
+ },
11
+ },
12
+ blockExplorers: {
13
+ default: {
14
+ name: 'Somnia Testnet Explorer',
15
+ url: 'https://somnia-testnet.socialscan.io',
16
+ apiUrl: 'https://shannon-explorer.somnia.network/api',
17
+ },
18
+ },
19
+ testnet: true,
20
+ })
package/chains/index.ts CHANGED
@@ -41,6 +41,7 @@ export { b3 } from './definitions/b3.js'
41
41
  export { b3Sepolia } from './definitions/b3Sepolia.js'
42
42
  export { bahamut } from './definitions/bahamut.js'
43
43
  export { base } from './definitions/base.js'
44
+ export { basecampTestnet } from './definitions/basecampTestnet.js'
44
45
  export { baseGoerli } from './definitions/baseGoerli.js'
45
46
  export { baseSepolia } from './definitions/baseSepolia.js'
46
47
  export { beam } from './definitions/beam.js'
@@ -452,6 +453,7 @@ export { skaleTitanTestnet } from './definitions/skale/titanTestnet.js'
452
453
  export { sketchpad } from './definitions/sketchpad.js'
453
454
  export { snax } from './definitions/snax.js'
454
455
  export { snaxTestnet } from './definitions/snaxTestnet.js'
456
+ export { somniaTestnet } from './definitions/somniaTestnet.js'
455
457
  export { soneium } from './definitions/soneium.js'
456
458
  export { soneiumMinato } from './definitions/soneiumMinato.js'
457
459
  export { sonic } from './definitions/sonic.js'
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.23.11'
1
+ export const version = '2.23.12'
@@ -29,7 +29,7 @@ export type GetCallsStatusErrorType = RequestErrorType | ErrorType
29
29
  * @example
30
30
  * import { createWalletClient, custom } from 'viem'
31
31
  * import { mainnet } from 'viem/chains'
32
- * import { getCallsStatus } from 'viem/wallet'
32
+ * import { getCallsStatus } from 'viem/experimental'
33
33
  *
34
34
  * const client = createWalletClient({
35
35
  * chain: mainnet,
@@ -36,7 +36,7 @@ export type GetCapabilitiesErrorType = RequestErrorType | ErrorType
36
36
  * @example
37
37
  * import { createWalletClient, custom } from 'viem'
38
38
  * import { mainnet } from 'viem/chains'
39
- * import { getCapabilities } from 'viem/wallet'
39
+ * import { getCapabilities } from 'viem/experimental'
40
40
  *
41
41
  * const client = createWalletClient({
42
42
  * chain: mainnet,
@@ -49,7 +49,7 @@ export type SendCallsErrorType = RequestErrorType | ErrorType
49
49
  * @example
50
50
  * import { createWalletClient, custom } from 'viem'
51
51
  * import { mainnet } from 'viem/chains'
52
- * import { sendCalls } from 'viem/wallet'
52
+ * import { sendCalls } from 'viem/experimental'
53
53
  *
54
54
  * const client = createWalletClient({
55
55
  * chain: mainnet,
@@ -24,7 +24,7 @@ export type ShowCallsStatusErrorType = RequestErrorType | ErrorType
24
24
  * @example
25
25
  * import { createWalletClient, custom } from 'viem'
26
26
  * import { mainnet } from 'viem/chains'
27
- * import { showCallsStatus } from 'viem/wallet'
27
+ * import { showCallsStatus } from 'viem/experimental'
28
28
  *
29
29
  * const client = createWalletClient({
30
30
  * chain: mainnet,
@@ -0,0 +1,137 @@
1
+ import type { Client } from '../../../clients/createClient.js'
2
+ import type { Transport } from '../../../clients/transports/createTransport.js'
3
+ import { BaseError } from '../../../errors/base.js'
4
+ import type { ErrorType } from '../../../errors/utils.js'
5
+ import type { Chain } from '../../../types/chain.js'
6
+ import type { WalletGetCallsStatusReturnType } from '../../../types/eip1193.js'
7
+ import type { Prettify } from '../../../types/utils.js'
8
+ import { type ObserveErrorType, observe } from '../../../utils/observe.js'
9
+ import { type PollErrorType, poll } from '../../../utils/poll.js'
10
+ import { withResolvers } from '../../../utils/promise/withResolvers.js'
11
+ import { stringify } from '../../../utils/stringify.js'
12
+ import {
13
+ type GetCallsStatusErrorType,
14
+ getCallsStatus,
15
+ } from './getCallsStatus.js'
16
+
17
+ export type WaitForCallsStatusParameters = {
18
+ /**
19
+ * The id of the call batch to wait for.
20
+ */
21
+ id: string
22
+ /**
23
+ * Polling frequency (in ms). Defaults to the client's pollingInterval config.
24
+ *
25
+ * @default client.pollingInterval
26
+ */
27
+ pollingInterval?: number | undefined
28
+ /**
29
+ * The status to wait for.
30
+ *
31
+ * @default 'CONFIRMED'
32
+ */
33
+ status?: 'CONFIRMED' | undefined
34
+ /**
35
+ * Optional timeout (in milliseconds) to wait before stopping polling.
36
+ *
37
+ * @default 60_000
38
+ */
39
+ timeout?: number | undefined
40
+ }
41
+
42
+ export type WaitForCallsStatusReturnType = Prettify<
43
+ WalletGetCallsStatusReturnType<bigint, 'success' | 'reverted'>
44
+ >
45
+
46
+ export type WaitForCallsStatusErrorType =
47
+ | ObserveErrorType
48
+ | PollErrorType
49
+ | GetCallsStatusErrorType
50
+ | WaitForCallsStatusTimeoutError
51
+ | ErrorType
52
+
53
+ /**
54
+ * Waits for the status & receipts of a call bundle that was sent via `sendCalls`.
55
+ *
56
+ * - Docs: https://viem.sh/experimental/eip5792/waitForCallsStatus
57
+ * - JSON-RPC Methods: [`wallet_getCallsStatus`](https://eips.ethereum.org/EIPS/eip-5792)
58
+ *
59
+ * @param client - Client to use
60
+ * @param parameters - {@link WaitForCallsStatusParameters}
61
+ * @returns Status & receipts of the call bundle. {@link WaitForCallsStatusReturnType}
62
+ *
63
+ * @example
64
+ * import { createWalletClient, custom } from 'viem'
65
+ * import { mainnet } from 'viem/chains'
66
+ * import { waitForCallsStatus } from 'viem/experimental'
67
+ *
68
+ * const client = createWalletClient({
69
+ * chain: mainnet,
70
+ * transport: custom(window.ethereum),
71
+ * })
72
+ *
73
+ * const { receipts, status } = await waitForCallsStatus(client, { id: '0xdeadbeef' })
74
+ */
75
+ export async function waitForCallsStatus<chain extends Chain | undefined>(
76
+ client: Client<Transport, chain>,
77
+ parameters: WaitForCallsStatusParameters,
78
+ ): Promise<WaitForCallsStatusReturnType> {
79
+ const {
80
+ id,
81
+ pollingInterval = client.pollingInterval,
82
+ status = 'CONFIRMED',
83
+ timeout = 60_000,
84
+ } = parameters
85
+ const observerId = stringify(['waitForCallsStatus', client.uid, id])
86
+
87
+ const { promise, resolve, reject } =
88
+ withResolvers<WaitForCallsStatusReturnType>()
89
+
90
+ let timer: Timer | undefined = undefined
91
+
92
+ const unobserve = observe(observerId, { resolve, reject }, (emit) => {
93
+ const unpoll = poll(
94
+ async () => {
95
+ try {
96
+ const result = await getCallsStatus(client, { id })
97
+ if (result.status !== status) return
98
+ emit.resolve(result)
99
+ } catch (error) {
100
+ if (timer) clearTimeout(timer)
101
+ unpoll()
102
+ emit.reject(error)
103
+ unobserve()
104
+ }
105
+ },
106
+ {
107
+ interval: pollingInterval,
108
+ emitOnBegin: true,
109
+ },
110
+ )
111
+
112
+ return unpoll
113
+ })
114
+
115
+ timer = timeout
116
+ ? setTimeout(() => {
117
+ unobserve()
118
+ clearTimeout(timer)
119
+ reject(new WaitForCallsStatusTimeoutError({ id }))
120
+ }, timeout)
121
+ : undefined
122
+
123
+ return await promise
124
+ }
125
+
126
+ export type WaitForCallsStatusTimeoutErrorType =
127
+ WaitForCallsStatusTimeoutError & {
128
+ name: 'WaitForCallsStatusTimeoutError'
129
+ }
130
+ export class WaitForCallsStatusTimeoutError extends BaseError {
131
+ constructor({ id }: { id: string }) {
132
+ super(
133
+ `Timed out while waiting for call bundle with id "${id}" to be confirmed.`,
134
+ { name: 'WaitForCallsStatusTimeoutError' },
135
+ )
136
+ }
137
+ }
@@ -22,6 +22,11 @@ import {
22
22
  type ShowCallsStatusReturnType,
23
23
  showCallsStatus,
24
24
  } from '../actions/showCallsStatus.js'
25
+ import {
26
+ type WaitForCallsStatusParameters,
27
+ type WaitForCallsStatusReturnType,
28
+ waitForCallsStatus,
29
+ } from '../actions/waitForCallsStatus.js'
25
30
  import {
26
31
  type WriteContractsParameters,
27
32
  type WriteContractsReturnType,
@@ -143,6 +148,31 @@ export type Eip5792Actions<
143
148
  showCallsStatus: (
144
149
  parameters: ShowCallsStatusParameters,
145
150
  ) => Promise<ShowCallsStatusReturnType>
151
+ /**
152
+ * Waits for the status & receipts of a call bundle that was sent via `sendCalls`.
153
+ *
154
+ * - Docs: https://viem.sh/experimental/eip5792/waitForCallsStatus
155
+ * - JSON-RPC Methods: [`wallet_getCallsStatus`](https://eips.ethereum.org/EIPS/eip-5792)
156
+ *
157
+ * @param client - Client to use
158
+ * @param parameters - {@link WaitForCallsStatusParameters}
159
+ * @returns Status & receipts of the call bundle. {@link WaitForCallsStatusReturnType}
160
+ *
161
+ * @example
162
+ * import { createWalletClient, custom } from 'viem'
163
+ * import { mainnet } from 'viem/chains'
164
+ * import { waitForCallsStatus } from 'viem/experimental'
165
+ *
166
+ * const client = createWalletClient({
167
+ * chain: mainnet,
168
+ * transport: custom(window.ethereum),
169
+ * })
170
+ *
171
+ * const { receipts, status } = await waitForCallsStatus(client, { id: '0xdeadbeef' })
172
+ */
173
+ waitForCallsStatus: (
174
+ parameters: WaitForCallsStatusParameters,
175
+ ) => Promise<WaitForCallsStatusReturnType>
146
176
  /**
147
177
  * Requests for the wallet to sign and broadcast a batch of write contract calls (transactions) to the network.
148
178
  *
@@ -231,6 +261,8 @@ export function eip5792Actions() {
231
261
  getCapabilities(client as any, parameters)) as any,
232
262
  sendCalls: (parameters) => sendCalls(client, parameters),
233
263
  showCallsStatus: (parameters) => showCallsStatus(client, parameters),
264
+ waitForCallsStatus: (parameters) =>
265
+ waitForCallsStatus(client, parameters),
234
266
  writeContracts: (parameters) => writeContracts(client, parameters),
235
267
  }
236
268
  }
@@ -23,6 +23,14 @@ export {
23
23
  type ShowCallsStatusReturnType,
24
24
  showCallsStatus,
25
25
  } from './eip5792/actions/showCallsStatus.js'
26
+ export {
27
+ type WaitForCallsStatusErrorType,
28
+ type WaitForCallsStatusParameters,
29
+ type WaitForCallsStatusReturnType,
30
+ type WaitForCallsStatusTimeoutErrorType,
31
+ WaitForCallsStatusTimeoutError,
32
+ waitForCallsStatus,
33
+ } from './eip5792/actions/waitForCallsStatus.js'
26
34
  export {
27
35
  type WriteContractsErrorType,
28
36
  type WriteContractsParameters,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.23.11",
4
+ "version": "2.23.12",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
package/utils/ccip.ts CHANGED
@@ -141,7 +141,7 @@ export async function ccipRequest({
141
141
 
142
142
  try {
143
143
  const response = await fetch(
144
- url.replace('{sender}', sender).replace('{data}', data),
144
+ url.replace('{sender}', sender.toLowerCase()).replace('{data}', data),
145
145
  {
146
146
  body: JSON.stringify(body),
147
147
  headers,
@@ -91,8 +91,12 @@ function formatAuthorizationList(
91
91
  (authorization) =>
92
92
  ({
93
93
  address: authorization.contractAddress,
94
- r: authorization.r,
95
- s: authorization.s,
94
+ r: authorization.r
95
+ ? numberToHex(BigInt(authorization.r))
96
+ : authorization.r,
97
+ s: authorization.s
98
+ ? numberToHex(BigInt(authorization.s))
99
+ : authorization.s,
96
100
  chainId: numberToHex(authorization.chainId),
97
101
  nonce: numberToHex(authorization.nonce),
98
102
  ...(typeof authorization.yParity !== 'undefined'
@@ -0,0 +1,122 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Account } from '../../accounts/types.js'
3
+ import { readContract } from '../../actions/public/readContract.js'
4
+ import type { Client } from '../../clients/createClient.js'
5
+ import type { Transport } from '../../clients/transports/createTransport.js'
6
+ import {
7
+ ChainNotFoundError,
8
+ type ChainNotFoundErrorType,
9
+ } from '../../errors/chain.js'
10
+ import type { Chain } from '../../types/chain.js'
11
+ import type { Hash } from '../../types/misc.js'
12
+ import { isAddressEqual, slice } from '../../utils/index.js'
13
+ import { l1SharedBridgeAbi, l2SharedBridgeAbi } from '../constants/abis.js'
14
+ import { l2BaseTokenAddress } from '../constants/address.js'
15
+ import {
16
+ WithdrawalLogNotFoundError,
17
+ type WithdrawalLogNotFoundErrorType,
18
+ } from '../errors/bridge.js'
19
+ import type { ChainEIP712 } from '../types/chain.js'
20
+ import { getWithdrawalL2ToL1Log } from '../utils/bridge/getWithdrawalL2ToL1Log.js'
21
+ import { getWithdrawalLog } from '../utils/bridge/getWithdrawalLog.js'
22
+ import { getBaseTokenL1Address } from './getBaseTokenL1Address.js'
23
+ import { getDefaultBridgeAddresses } from './getDefaultBridgeAddresses.js'
24
+ import { getLogProof } from './getLogProof.js'
25
+
26
+ export type IsWithdrawalFinalizedParameters<
27
+ chain extends Chain | undefined = Chain | undefined,
28
+ account extends Account | undefined = Account | undefined,
29
+ > = {
30
+ /** L2 client */
31
+ client: Client<Transport, chain, account>
32
+ /** Hash of the L2 transaction where the withdrawal was initiated. */
33
+ hash: Hash
34
+ /** In case there were multiple withdrawals in one transaction, you may pass an index of the
35
+ withdrawal you want to finalize. */
36
+ index?: number | undefined
37
+ }
38
+
39
+ export type IsWithdrawalFinalizedReturnType = boolean
40
+
41
+ export type IsWithdrawalFinalizedErrorType =
42
+ | WithdrawalLogNotFoundErrorType
43
+ | ChainNotFoundErrorType
44
+
45
+ /**
46
+ * Returns whether the withdrawal transaction is finalized on the L1 network.
47
+ *
48
+ * @param client - Client to use
49
+ * @param parameters - {@link IsWithdrawalFinalizedParameters}
50
+ * @returns bool - Whether the withdrawal transaction is finalized on the L1 network. {@link IsWithdrawalFinalizedReturnType}
51
+ *
52
+ * @example
53
+ * import { createPublicClient, http } from 'viem'
54
+ * import { mainnet, zksync } from 'viem/chains'
55
+ * import { isWithdrawalFinalized } from 'viem/zksync'
56
+ *
57
+ * const client = createPublicClient({
58
+ * chain: mainnet,
59
+ * transport: http(),
60
+ * })
61
+ *
62
+ * const clientL2 = createPublicClient({
63
+ * chain: zksync,
64
+ * transport: http(),
65
+ * })
66
+ *
67
+ * const hash = await isWithdrawalFinalized(client, {
68
+ * client: clientL2,
69
+ * hash: '0x...',
70
+ * })
71
+ */
72
+ export async function isWithdrawalFinalized<
73
+ chain extends Chain | undefined,
74
+ account extends Account | undefined,
75
+ chainL2 extends ChainEIP712 | undefined,
76
+ accountL2 extends Account | undefined,
77
+ >(
78
+ client: Client<Transport, chain, account>,
79
+ parameters: IsWithdrawalFinalizedParameters<chainL2, accountL2>,
80
+ ): Promise<IsWithdrawalFinalizedReturnType> {
81
+ const { client: l2Client, hash, index = 0 } = parameters
82
+
83
+ if (!l2Client.chain) throw new ChainNotFoundError()
84
+
85
+ const { log } = await getWithdrawalLog(l2Client, { hash, index })
86
+ const { l2ToL1LogIndex } = await getWithdrawalL2ToL1Log(l2Client, {
87
+ hash,
88
+ index,
89
+ })
90
+ const sender = slice(log.topics[1]!, 12) as Address
91
+ // `getLogProof` is called not to get proof but
92
+ // to get the index of the corresponding L2->L1 log,
93
+ // which is returned as `proof.id`.
94
+ const proof = await getLogProof(l2Client, {
95
+ txHash: hash,
96
+ index: l2ToL1LogIndex!,
97
+ })
98
+ if (!proof) {
99
+ throw new WithdrawalLogNotFoundError({ hash })
100
+ }
101
+
102
+ let l1Bridge: Address
103
+ if (
104
+ isAddressEqual(sender, await getBaseTokenL1Address(l2Client)) ||
105
+ isAddressEqual(sender, l2BaseTokenAddress)
106
+ )
107
+ l1Bridge = (await getDefaultBridgeAddresses(l2Client)).sharedL1
108
+ else
109
+ l1Bridge = await readContract(l2Client, {
110
+ address: sender,
111
+ abi: l2SharedBridgeAbi,
112
+ functionName: 'l1SharedBridge',
113
+ args: [],
114
+ })
115
+
116
+ return await readContract(client, {
117
+ address: l1Bridge,
118
+ abi: l1SharedBridgeAbi,
119
+ functionName: 'isWithdrawalFinalized',
120
+ args: [BigInt(l2Client.chain.id), log.l1BatchNumber!, BigInt(proof.id)],
121
+ })
122
+ }
@@ -17,6 +17,11 @@ import {
17
17
  type GetL1TokenBalanceReturnType,
18
18
  getL1TokenBalance,
19
19
  } from '../actions/getL1TokenBalance.js'
20
+ import {
21
+ type IsWithdrawalFinalizedParameters,
22
+ type IsWithdrawalFinalizedReturnType,
23
+ isWithdrawalFinalized,
24
+ } from '../actions/isWithdrawalFinalized.js'
20
25
 
21
26
  export type PublicActionsL1<
22
27
  account extends Account | undefined = Account | undefined,
@@ -163,6 +168,36 @@ export type PublicActionsL1<
163
168
  ? [GetL1BalanceParameters<account>]
164
169
  : [GetL1BalanceParameters<account>] | []
165
170
  ) => Promise<GetL1BalanceReturnType>
171
+ /**
172
+ * Returns whether the withdrawal transaction is finalized on the L1 network.
173
+ *
174
+ * @param client - Client to use
175
+ * @param parameters - {@link IsWithdrawalFinalizedParameters}
176
+ * @returns bool - Whether the withdrawal transaction is finalized on the L1 network. {@link IsWithdrawalFinalizedReturnType}
177
+ *
178
+ * @example
179
+ * import { createPublicClient, http } from 'viem'
180
+ * import { mainnet, zksync } from 'viem/chains'
181
+ * import { publicActionsL1, publicActionsL2 } from 'viem/zksync'
182
+ *
183
+ * const client = createPublicClient({
184
+ * chain: mainnet,
185
+ * transport: http(),
186
+ * }).extend(publicActionsL1())
187
+ *
188
+ * const clientL2 = createPublicClient({
189
+ * chain: zksync,
190
+ * transport: http(),
191
+ * }).extend(publicActionsL2())
192
+ *
193
+ * const hash = await client.isWithdrawalFinalized({
194
+ * client: clientL2,
195
+ * hash: '0x...',
196
+ * })
197
+ */
198
+ isWithdrawalFinalized: (
199
+ parameters: IsWithdrawalFinalizedParameters,
200
+ ) => Promise<IsWithdrawalFinalizedReturnType>
166
201
  }
167
202
 
168
203
  export function publicActionsL1() {
@@ -176,5 +211,6 @@ export function publicActionsL1() {
176
211
  getL1TokenBalance: (args) => getL1TokenBalance(client, args),
177
212
  // @ts-expect-error
178
213
  getL1Balance: (args) => getL1Balance(client, args),
214
+ isWithdrawalFinalized: (args) => isWithdrawalFinalized(client, args),
179
215
  })
180
216
  }
package/zksync/index.ts CHANGED
@@ -95,6 +95,12 @@ export {
95
95
  type GetTransactionDetailsReturnType,
96
96
  getTransactionDetails,
97
97
  } from './actions/getTransactionDetails.js'
98
+ export {
99
+ type IsWithdrawalFinalizedErrorType,
100
+ type IsWithdrawalFinalizedReturnType,
101
+ type IsWithdrawalFinalizedParameters,
102
+ isWithdrawalFinalized,
103
+ } from './actions/isWithdrawalFinalized.js'
98
104
  export {
99
105
  type RequestExecuteErrorType,
100
106
  type RequestExecuteReturnType,
@@ -63,7 +63,7 @@ function serializeTransactionEIP712(
63
63
  gas ? toHex(gas) : '0x',
64
64
  to ?? '0x',
65
65
  value ? toHex(value) : '0x',
66
- data ?? '0x0',
66
+ data ?? '0x',
67
67
  toHex(chainId),
68
68
  toHex(''),
69
69
  toHex(''),