viem 2.23.1 → 2.23.3

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 (204) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/_cjs/chains/definitions/b3.js +6 -0
  3. package/_cjs/chains/definitions/b3.js.map +1 -1
  4. package/_cjs/chains/definitions/b3Sepolia.js +6 -0
  5. package/_cjs/chains/definitions/b3Sepolia.js.map +1 -1
  6. package/_cjs/chains/definitions/berachainTestnet.js +6 -0
  7. package/_cjs/chains/definitions/berachainTestnet.js.map +1 -1
  8. package/_cjs/chains/definitions/donatuz.js +1 -1
  9. package/_cjs/chains/definitions/donatuz.js.map +1 -1
  10. package/_cjs/chains/definitions/hashkeyChainTestnet.js +1 -0
  11. package/_cjs/chains/definitions/hashkeyChainTestnet.js.map +1 -1
  12. package/_cjs/chains/definitions/haustTestnet.js +26 -0
  13. package/_cjs/chains/definitions/haustTestnet.js.map +1 -0
  14. package/_cjs/chains/definitions/lumoz.js +26 -0
  15. package/_cjs/chains/definitions/lumoz.js.map +1 -0
  16. package/_cjs/chains/definitions/lumozTestnet.js +20 -0
  17. package/_cjs/chains/definitions/lumozTestnet.js.map +1 -0
  18. package/_cjs/chains/definitions/newton.js +26 -0
  19. package/_cjs/chains/definitions/newton.js.map +1 -0
  20. package/_cjs/chains/definitions/peaq.js +41 -0
  21. package/_cjs/chains/definitions/peaq.js.map +1 -0
  22. package/_cjs/chains/definitions/polynomial.js +31 -0
  23. package/_cjs/chains/definitions/polynomial.js.map +1 -0
  24. package/_cjs/chains/definitions/polynomialSepolia.js +31 -0
  25. package/_cjs/chains/definitions/polynomialSepolia.js.map +1 -0
  26. package/_cjs/chains/definitions/pumpfiTestnet.js +26 -0
  27. package/_cjs/chains/definitions/pumpfiTestnet.js.map +1 -0
  28. package/_cjs/chains/definitions/story.js +7 -0
  29. package/_cjs/chains/definitions/story.js.map +1 -1
  30. package/_cjs/chains/definitions/storyAeneid.js +31 -0
  31. package/_cjs/chains/definitions/storyAeneid.js.map +1 -0
  32. package/_cjs/chains/definitions/unichain.js +21 -1
  33. package/_cjs/chains/definitions/unichain.js.map +1 -1
  34. package/_cjs/chains/definitions/worldchain.js +1 -1
  35. package/_cjs/chains/index.js +25 -7
  36. package/_cjs/chains/index.js.map +1 -1
  37. package/_cjs/errors/version.js +1 -1
  38. package/_cjs/op-stack/abis.js +7 -96
  39. package/_cjs/op-stack/abis.js.map +1 -1
  40. package/_cjs/op-stack/actions/getWithdrawalStatus.js +21 -14
  41. package/_cjs/op-stack/actions/getWithdrawalStatus.js.map +1 -1
  42. package/_cjs/op-stack/chains.js +3 -1
  43. package/_cjs/op-stack/chains.js.map +1 -1
  44. package/_cjs/zksync/actions/finalizeWithdrawal.js +99 -0
  45. package/_cjs/zksync/actions/finalizeWithdrawal.js.map +1 -0
  46. package/_cjs/zksync/constants/abis.js +724 -1
  47. package/_cjs/zksync/constants/abis.js.map +1 -1
  48. package/_cjs/zksync/constants/address.js +2 -1
  49. package/_cjs/zksync/constants/address.js.map +1 -1
  50. package/_cjs/zksync/decorators/walletL1.js +2 -0
  51. package/_cjs/zksync/decorators/walletL1.js.map +1 -1
  52. package/_cjs/zksync/errors/bridge.js +11 -1
  53. package/_cjs/zksync/errors/bridge.js.map +1 -1
  54. package/_cjs/zksync/index.js +4 -2
  55. package/_cjs/zksync/index.js.map +1 -1
  56. package/_cjs/zksync/utils/bridge/getWithdrawalL2ToL1Log.js +19 -0
  57. package/_cjs/zksync/utils/bridge/getWithdrawalL2ToL1Log.js.map +1 -0
  58. package/_cjs/zksync/utils/bridge/getWithdrawalLog.js +19 -0
  59. package/_cjs/zksync/utils/bridge/getWithdrawalLog.js.map +1 -0
  60. package/_esm/chains/definitions/b3.js +6 -0
  61. package/_esm/chains/definitions/b3.js.map +1 -1
  62. package/_esm/chains/definitions/b3Sepolia.js +6 -0
  63. package/_esm/chains/definitions/b3Sepolia.js.map +1 -1
  64. package/_esm/chains/definitions/berachainTestnet.js +6 -0
  65. package/_esm/chains/definitions/berachainTestnet.js.map +1 -1
  66. package/_esm/chains/definitions/donatuz.js +1 -1
  67. package/_esm/chains/definitions/donatuz.js.map +1 -1
  68. package/_esm/chains/definitions/hashkeyChainTestnet.js +1 -0
  69. package/_esm/chains/definitions/hashkeyChainTestnet.js.map +1 -1
  70. package/_esm/chains/definitions/haustTestnet.js +23 -0
  71. package/_esm/chains/definitions/haustTestnet.js.map +1 -0
  72. package/_esm/chains/definitions/lumoz.js +23 -0
  73. package/_esm/chains/definitions/lumoz.js.map +1 -0
  74. package/_esm/chains/definitions/lumozTestnet.js +17 -0
  75. package/_esm/chains/definitions/lumozTestnet.js.map +1 -0
  76. package/_esm/chains/definitions/newton.js +23 -0
  77. package/_esm/chains/definitions/newton.js.map +1 -0
  78. package/_esm/chains/definitions/peaq.js +38 -0
  79. package/_esm/chains/definitions/peaq.js.map +1 -0
  80. package/_esm/chains/definitions/polynomial.js +28 -0
  81. package/_esm/chains/definitions/polynomial.js.map +1 -0
  82. package/_esm/chains/definitions/polynomialSepolia.js +28 -0
  83. package/_esm/chains/definitions/polynomialSepolia.js.map +1 -0
  84. package/_esm/chains/definitions/pumpfiTestnet.js +23 -0
  85. package/_esm/chains/definitions/pumpfiTestnet.js.map +1 -0
  86. package/_esm/chains/definitions/story.js +7 -0
  87. package/_esm/chains/definitions/story.js.map +1 -1
  88. package/_esm/chains/definitions/storyAeneid.js +28 -0
  89. package/_esm/chains/definitions/storyAeneid.js.map +1 -0
  90. package/_esm/chains/definitions/unichain.js +21 -1
  91. package/_esm/chains/definitions/unichain.js.map +1 -1
  92. package/_esm/chains/definitions/worldchain.js +1 -1
  93. package/_esm/chains/index.js +11 -0
  94. package/_esm/chains/index.js.map +1 -1
  95. package/_esm/errors/version.js +1 -1
  96. package/_esm/op-stack/abis.js +7 -96
  97. package/_esm/op-stack/abis.js.map +1 -1
  98. package/_esm/op-stack/actions/getWithdrawalStatus.js +25 -14
  99. package/_esm/op-stack/actions/getWithdrawalStatus.js.map +1 -1
  100. package/_esm/op-stack/chains.js +1 -0
  101. package/_esm/op-stack/chains.js.map +1 -1
  102. package/_esm/zksync/actions/finalizeWithdrawal.js +147 -0
  103. package/_esm/zksync/actions/finalizeWithdrawal.js.map +1 -0
  104. package/_esm/zksync/constants/abis.js +723 -0
  105. package/_esm/zksync/constants/abis.js.map +1 -1
  106. package/_esm/zksync/constants/address.js +1 -0
  107. package/_esm/zksync/constants/address.js.map +1 -1
  108. package/_esm/zksync/decorators/walletL1.js +2 -0
  109. package/_esm/zksync/decorators/walletL1.js.map +1 -1
  110. package/_esm/zksync/errors/bridge.js +9 -0
  111. package/_esm/zksync/errors/bridge.js.map +1 -1
  112. package/_esm/zksync/index.js +1 -0
  113. package/_esm/zksync/index.js.map +1 -1
  114. package/_esm/zksync/utils/bridge/getWithdrawalL2ToL1Log.js +17 -0
  115. package/_esm/zksync/utils/bridge/getWithdrawalL2ToL1Log.js.map +1 -0
  116. package/_esm/zksync/utils/bridge/getWithdrawalLog.js +17 -0
  117. package/_esm/zksync/utils/bridge/getWithdrawalLog.js.map +1 -0
  118. package/_types/chains/definitions/b3.d.ts +6 -10
  119. package/_types/chains/definitions/b3.d.ts.map +1 -1
  120. package/_types/chains/definitions/b3Sepolia.d.ts +6 -10
  121. package/_types/chains/definitions/b3Sepolia.d.ts.map +1 -1
  122. package/_types/chains/definitions/berachainTestnet.d.ts +6 -10
  123. package/_types/chains/definitions/berachainTestnet.d.ts.map +1 -1
  124. package/_types/chains/definitions/donatuz.d.ts +1 -1
  125. package/_types/chains/definitions/hashkeyChainTestnet.d.ts +1 -1
  126. package/_types/chains/definitions/hashkeyChainTestnet.d.ts.map +1 -1
  127. package/_types/chains/definitions/haustTestnet.d.ts +37 -0
  128. package/_types/chains/definitions/haustTestnet.d.ts.map +1 -0
  129. package/_types/chains/definitions/lumoz.d.ts +37 -0
  130. package/_types/chains/definitions/lumoz.d.ts.map +1 -0
  131. package/_types/chains/definitions/lumozTestnet.d.ts +43 -0
  132. package/_types/chains/definitions/lumozTestnet.d.ts.map +1 -0
  133. package/_types/chains/definitions/newton.d.ts +37 -0
  134. package/_types/chains/definitions/newton.d.ts.map +1 -0
  135. package/_types/chains/definitions/peaq.d.ts +34 -0
  136. package/_types/chains/definitions/peaq.d.ts.map +1 -0
  137. package/_types/chains/definitions/polynomial.d.ts +32 -0
  138. package/_types/chains/definitions/polynomial.d.ts.map +1 -0
  139. package/_types/chains/definitions/polynomialSepolia.d.ts +32 -0
  140. package/_types/chains/definitions/polynomialSepolia.d.ts.map +1 -0
  141. package/_types/chains/definitions/pumpfiTestnet.d.ts +37 -0
  142. package/_types/chains/definitions/pumpfiTestnet.d.ts.map +1 -0
  143. package/_types/chains/definitions/story.d.ts +6 -11
  144. package/_types/chains/definitions/story.d.ts.map +1 -1
  145. package/_types/chains/definitions/storyAeneid.d.ts +34 -0
  146. package/_types/chains/definitions/storyAeneid.d.ts.map +1 -0
  147. package/_types/chains/definitions/unichain.d.ts +269 -4
  148. package/_types/chains/definitions/unichain.d.ts.map +1 -1
  149. package/_types/chains/definitions/worldchain.d.ts +1 -1
  150. package/_types/chains/index.d.ts +11 -0
  151. package/_types/chains/index.d.ts.map +1 -1
  152. package/_types/errors/version.d.ts +1 -1
  153. package/_types/op-stack/abis.d.ts +7 -77
  154. package/_types/op-stack/abis.d.ts.map +1 -1
  155. package/_types/op-stack/actions/getWithdrawalStatus.d.ts.map +1 -1
  156. package/_types/op-stack/chains.d.ts +1 -0
  157. package/_types/op-stack/chains.d.ts.map +1 -1
  158. package/_types/zksync/actions/finalizeWithdrawal.d.ts +73 -0
  159. package/_types/zksync/actions/finalizeWithdrawal.d.ts.map +1 -0
  160. package/_types/zksync/constants/abis.d.ts +567 -0
  161. package/_types/zksync/constants/abis.d.ts.map +1 -1
  162. package/_types/zksync/constants/address.d.ts +1 -0
  163. package/_types/zksync/constants/address.d.ts.map +1 -1
  164. package/_types/zksync/decorators/walletL1.d.ts +31 -0
  165. package/_types/zksync/decorators/walletL1.d.ts.map +1 -1
  166. package/_types/zksync/errors/bridge.d.ts +9 -0
  167. package/_types/zksync/errors/bridge.d.ts.map +1 -1
  168. package/_types/zksync/index.d.ts +1 -0
  169. package/_types/zksync/index.d.ts.map +1 -1
  170. package/_types/zksync/utils/bridge/getWithdrawalL2ToL1Log.d.ts +20 -0
  171. package/_types/zksync/utils/bridge/getWithdrawalL2ToL1Log.d.ts.map +1 -0
  172. package/_types/zksync/utils/bridge/getWithdrawalLog.d.ts +20 -0
  173. package/_types/zksync/utils/bridge/getWithdrawalLog.d.ts.map +1 -0
  174. package/chains/definitions/b3.ts +6 -0
  175. package/chains/definitions/b3Sepolia.ts +6 -0
  176. package/chains/definitions/berachainTestnet.ts +6 -0
  177. package/chains/definitions/donatuz.ts +1 -1
  178. package/chains/definitions/hashkeyChainTestnet.ts +1 -0
  179. package/chains/definitions/haustTestnet.ts +23 -0
  180. package/chains/definitions/lumoz.ts +23 -0
  181. package/chains/definitions/lumozTestnet.ts +17 -0
  182. package/chains/definitions/newton.ts +23 -0
  183. package/chains/definitions/peaq.ts +38 -0
  184. package/chains/definitions/polynomial.ts +28 -0
  185. package/chains/definitions/polynomialSepolia.ts +28 -0
  186. package/chains/definitions/pumpfiTestnet.ts +23 -0
  187. package/chains/definitions/story.ts +7 -0
  188. package/chains/definitions/storyAeneid.ts +28 -0
  189. package/chains/definitions/unichain.ts +22 -1
  190. package/chains/definitions/worldchain.ts +1 -1
  191. package/chains/index.ts +11 -0
  192. package/errors/version.ts +1 -1
  193. package/op-stack/abis.ts +7 -96
  194. package/op-stack/actions/getWithdrawalStatus.ts +28 -17
  195. package/op-stack/chains.ts +1 -0
  196. package/package.json +1 -1
  197. package/zksync/actions/finalizeWithdrawal.ts +248 -0
  198. package/zksync/constants/abis.ts +724 -0
  199. package/zksync/constants/address.ts +3 -0
  200. package/zksync/decorators/walletL1.ts +48 -0
  201. package/zksync/errors/bridge.ts +17 -0
  202. package/zksync/index.ts +6 -0
  203. package/zksync/utils/bridge/getWithdrawalL2ToL1Log.ts +47 -0
  204. package/zksync/utils/bridge/getWithdrawalLog.ts +47 -0
@@ -2,6 +2,11 @@ import type { Client } from '../../clients/createClient.js'
2
2
  import type { Transport } from '../../clients/transports/createTransport.js'
3
3
  import type { Account } from '../../types/account.js'
4
4
  import type { Chain } from '../../types/chain.js'
5
+ import {
6
+ type FinalizeWithdrawalParameters,
7
+ type FinalizeWithdrawalReturnType,
8
+ finalizeWithdrawal,
9
+ } from '../actions/finalizeWithdrawal.js'
5
10
  import {
6
11
  type RequestExecuteParameters,
7
12
  type RequestExecuteReturnType,
@@ -13,6 +18,48 @@ export type WalletActionsL1<
13
18
  chain extends Chain | undefined = Chain | undefined,
14
19
  account extends Account | undefined = Account | undefined,
15
20
  > = {
21
+ /**
22
+ * Initiates the withdrawal process which withdraws ETH or any ERC20 token
23
+ * from the associated account on L2 network to the target account on L1 network.
24
+ *
25
+ * @param parameters - {@link FinalizeWithdrawalParameters}
26
+ * @returns hash - The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link FinalizeWithdrawalReturnType}
27
+ *
28
+ * @example
29
+ * import { createPublicClient, createWalletClient, http } from 'viem'
30
+ * import { privateKeyToAccount } from 'viem/accounts'
31
+ * import { mainnet, zksync } from 'viem/chains'
32
+ * import { walletActionsL1, publicActionsL2 } from 'viem/zksync'
33
+ *
34
+ * const walletClient = createWalletClient({
35
+ * account: privateKeyToAccount('0x…'),
36
+ * chain: mainnet,
37
+ * transport: http(),
38
+ * }).extend(walletActionsL1())
39
+ *
40
+ * const clientL2 = createPublicClient({
41
+ * chain: zksync,
42
+ * transport: http(),
43
+ * }).extend(publicActionsL2())
44
+ *
45
+ * const hash = await walletClient.finalizeWithdrawal({
46
+ * client: clientL2,
47
+ * hash: '0x…',
48
+ * })
49
+ */
50
+ finalizeWithdrawal: <
51
+ chainOverride extends Chain | undefined = undefined,
52
+ chainL2 extends ChainEIP712 | undefined = ChainEIP712 | undefined,
53
+ accountL2 extends Account | undefined = Account | undefined,
54
+ >(
55
+ parameters: FinalizeWithdrawalParameters<
56
+ chain,
57
+ account,
58
+ chainOverride,
59
+ chainL2,
60
+ accountL2
61
+ >,
62
+ ) => Promise<FinalizeWithdrawalReturnType>
16
63
  /**
17
64
  * Requests execution of a L2 transaction from L1.
18
65
  *
@@ -66,6 +113,7 @@ export function walletActionsL1() {
66
113
  >(
67
114
  client: Client<transport, chain, account>,
68
115
  ): WalletActionsL1<chain, account> => ({
116
+ finalizeWithdrawal: (args) => finalizeWithdrawal(client, args),
69
117
  requestExecute: (args) => requestExecute(client, args),
70
118
  })
71
119
  }
@@ -1,4 +1,5 @@
1
1
  import { BaseError } from '../../errors/base.js'
2
+ import type { Hash } from '../../types/misc.js'
2
3
 
3
4
  export type BaseFeeHigherThanValueErrorType = BaseFeeHigherThanValueError & {
4
5
  name: 'BaseFeeHigherThanValueError'
@@ -27,3 +28,19 @@ export class TxHashNotFoundInLogsError extends BaseError {
27
28
  })
28
29
  }
29
30
  }
31
+
32
+ export type WithdrawalLogNotFoundErrorType = WithdrawalLogNotFoundError & {
33
+ name: 'WithdrawalLogNotFoundError'
34
+ }
35
+ export class WithdrawalLogNotFoundError extends BaseError {
36
+ constructor({ hash }: { hash: Hash }) {
37
+ super(
38
+ [
39
+ `Withdrawal log with hash ${hash} not found.`,
40
+ '',
41
+ 'Either the withdrawal transaction is still processing or it did not finish successfully.',
42
+ ].join('\n'),
43
+ { name: 'WithdrawalLogNotFoundError' },
44
+ )
45
+ }
46
+ }
package/zksync/index.ts CHANGED
@@ -141,6 +141,12 @@ export {
141
141
  type WithdrawReturnType,
142
142
  withdraw,
143
143
  } from './actions/withdraw.js'
144
+ export {
145
+ type FinalizeWithdrawalErrorType,
146
+ type FinalizeWithdrawalParameters,
147
+ type FinalizeWithdrawalReturnType,
148
+ finalizeWithdrawal,
149
+ } from './actions/finalizeWithdrawal.js'
144
150
 
145
151
  export {
146
152
  legacyEthAddress,
@@ -0,0 +1,47 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Account } from '../../../accounts/index.js'
3
+ import { getTransactionReceipt } from '../../../actions/index.js'
4
+ import type { Client } from '../../../clients/createClient.js'
5
+ import type { Transport } from '../../../clients/transports/createTransport.js'
6
+ import type { Chain } from '../../../types/chain.js'
7
+ import type { Hash } from '../../../types/misc.js'
8
+ import { isAddressEqual } from '../../../utils/index.js'
9
+ import { l1MessengerAddress } from '../../constants/address.js'
10
+ import type { ZksyncL2ToL1Log } from '../../types/log.js'
11
+ import type { ZksyncTransactionReceipt } from '../../types/transaction.js'
12
+
13
+ export type GetWithdrawalL2ToL1LogParameters = {
14
+ /** Hash of the L2 transaction where the withdrawal was initiated. */
15
+ hash: Hash
16
+ /** In case there were multiple withdrawals in one transaction, you may pass an index of the
17
+ withdrawal you want to finalize. */
18
+ index?: number | undefined
19
+ }
20
+
21
+ export type GetWithdrawalL2ToL1LogReturnType = {
22
+ l2ToL1LogIndex: number | null
23
+ l2ToL1Log: ZksyncL2ToL1Log
24
+ }
25
+
26
+ /** @internal */
27
+ export async function getWithdrawalL2ToL1Log<
28
+ chain extends Chain | undefined,
29
+ account extends Account | undefined,
30
+ >(
31
+ client: Client<Transport, chain, account>,
32
+ parameters: GetWithdrawalL2ToL1LogParameters,
33
+ ): Promise<GetWithdrawalL2ToL1LogReturnType> {
34
+ const { hash, index = 0 } = parameters
35
+ const receipt = (await getTransactionReceipt(client, {
36
+ hash,
37
+ })) as ZksyncTransactionReceipt
38
+ const messages = Array.from(receipt.l2ToL1Logs.entries()).filter(([, log]) =>
39
+ isAddressEqual(log.sender as Address, l1MessengerAddress),
40
+ )
41
+ const [l2ToL1LogIndex, l2ToL1Log] = messages[index]
42
+
43
+ return {
44
+ l2ToL1LogIndex,
45
+ l2ToL1Log,
46
+ }
47
+ }
@@ -0,0 +1,47 @@
1
+ import type { Account } from '../../../accounts/types.js'
2
+ import { getTransactionReceipt } from '../../../actions/index.js'
3
+ import type { Client } from '../../../clients/createClient.js'
4
+ import type { Transport } from '../../../clients/transports/createTransport.js'
5
+ import type { Chain } from '../../../types/chain.js'
6
+ import type { Hash } from '../../../types/misc.js'
7
+ import { isAddressEqual, toFunctionHash } from '../../../utils/index.js'
8
+ import { l1MessengerAddress } from '../../constants/address.js'
9
+ import type { ZksyncLog } from '../../types/log.js'
10
+ import type { ZksyncTransactionReceipt } from '../../types/transaction.js'
11
+
12
+ export type GetWithdrawalLogParameters = {
13
+ /** Hash of the L2 transaction where the withdrawal was initiated. */
14
+ hash: Hash
15
+ /** In case there were multiple withdrawals in one transaction, you may pass an index of the
16
+ withdrawal you want to finalize. */
17
+ index?: number | undefined
18
+ }
19
+
20
+ export type GetWithdrawalLogReturnType = {
21
+ log: ZksyncLog
22
+ l1BatchTxId: bigint | null
23
+ }
24
+
25
+ /** @internal */
26
+ export async function getWithdrawalLog<
27
+ chain extends Chain | undefined,
28
+ account extends Account | undefined,
29
+ >(
30
+ client: Client<Transport, chain, account>,
31
+ parameters: GetWithdrawalLogParameters,
32
+ ): Promise<GetWithdrawalLogReturnType> {
33
+ const { hash, index = 0 } = parameters
34
+ const receipt = (await getTransactionReceipt(client, {
35
+ hash,
36
+ })) as ZksyncTransactionReceipt
37
+ const log = receipt.logs.filter(
38
+ (log) =>
39
+ isAddressEqual(log.address, l1MessengerAddress) &&
40
+ log.topics[0] === toFunctionHash('L1MessageSent(address,bytes32,bytes)'),
41
+ )[index]
42
+
43
+ return {
44
+ log,
45
+ l1BatchTxId: receipt.l1BatchTxIndex,
46
+ }
47
+ }