viem 2.23.2 → 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.
- package/CHANGELOG.md +28 -0
- package/_cjs/chains/definitions/b3.js +6 -0
- package/_cjs/chains/definitions/b3.js.map +1 -1
- package/_cjs/chains/definitions/b3Sepolia.js +6 -0
- package/_cjs/chains/definitions/b3Sepolia.js.map +1 -1
- package/_cjs/chains/definitions/berachainTestnet.js +6 -0
- package/_cjs/chains/definitions/berachainTestnet.js.map +1 -1
- package/_cjs/chains/definitions/donatuz.js +1 -1
- package/_cjs/chains/definitions/donatuz.js.map +1 -1
- package/_cjs/chains/definitions/hashkeyChainTestnet.js +1 -0
- package/_cjs/chains/definitions/hashkeyChainTestnet.js.map +1 -1
- package/_cjs/chains/definitions/haustTestnet.js +26 -0
- package/_cjs/chains/definitions/haustTestnet.js.map +1 -0
- package/_cjs/chains/definitions/lumoz.js +26 -0
- package/_cjs/chains/definitions/lumoz.js.map +1 -0
- package/_cjs/chains/definitions/lumozTestnet.js +20 -0
- package/_cjs/chains/definitions/lumozTestnet.js.map +1 -0
- package/_cjs/chains/definitions/newton.js +26 -0
- package/_cjs/chains/definitions/newton.js.map +1 -0
- package/_cjs/chains/definitions/peaq.js +41 -0
- package/_cjs/chains/definitions/peaq.js.map +1 -0
- package/_cjs/chains/definitions/polynomial.js +31 -0
- package/_cjs/chains/definitions/polynomial.js.map +1 -0
- package/_cjs/chains/definitions/polynomialSepolia.js +31 -0
- package/_cjs/chains/definitions/polynomialSepolia.js.map +1 -0
- package/_cjs/chains/definitions/story.js +7 -0
- package/_cjs/chains/definitions/story.js.map +1 -1
- package/_cjs/chains/definitions/storyAeneid.js +31 -0
- package/_cjs/chains/definitions/storyAeneid.js.map +1 -0
- package/_cjs/chains/definitions/worldchain.js +1 -1
- package/_cjs/chains/index.js +23 -7
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/op-stack/abis.js +7 -96
- package/_cjs/op-stack/abis.js.map +1 -1
- package/_cjs/op-stack/actions/getWithdrawalStatus.js +21 -14
- package/_cjs/op-stack/actions/getWithdrawalStatus.js.map +1 -1
- package/_cjs/zksync/actions/finalizeWithdrawal.js +99 -0
- package/_cjs/zksync/actions/finalizeWithdrawal.js.map +1 -0
- package/_cjs/zksync/constants/abis.js +724 -1
- package/_cjs/zksync/constants/abis.js.map +1 -1
- package/_cjs/zksync/constants/address.js +2 -1
- package/_cjs/zksync/constants/address.js.map +1 -1
- package/_cjs/zksync/decorators/walletL1.js +2 -0
- package/_cjs/zksync/decorators/walletL1.js.map +1 -1
- package/_cjs/zksync/errors/bridge.js +11 -1
- package/_cjs/zksync/errors/bridge.js.map +1 -1
- package/_cjs/zksync/index.js +4 -2
- package/_cjs/zksync/index.js.map +1 -1
- package/_cjs/zksync/utils/bridge/getWithdrawalL2ToL1Log.js +19 -0
- package/_cjs/zksync/utils/bridge/getWithdrawalL2ToL1Log.js.map +1 -0
- package/_cjs/zksync/utils/bridge/getWithdrawalLog.js +19 -0
- package/_cjs/zksync/utils/bridge/getWithdrawalLog.js.map +1 -0
- package/_esm/chains/definitions/b3.js +6 -0
- package/_esm/chains/definitions/b3.js.map +1 -1
- package/_esm/chains/definitions/b3Sepolia.js +6 -0
- package/_esm/chains/definitions/b3Sepolia.js.map +1 -1
- package/_esm/chains/definitions/berachainTestnet.js +6 -0
- package/_esm/chains/definitions/berachainTestnet.js.map +1 -1
- package/_esm/chains/definitions/donatuz.js +1 -1
- package/_esm/chains/definitions/donatuz.js.map +1 -1
- package/_esm/chains/definitions/hashkeyChainTestnet.js +1 -0
- package/_esm/chains/definitions/hashkeyChainTestnet.js.map +1 -1
- package/_esm/chains/definitions/haustTestnet.js +23 -0
- package/_esm/chains/definitions/haustTestnet.js.map +1 -0
- package/_esm/chains/definitions/lumoz.js +23 -0
- package/_esm/chains/definitions/lumoz.js.map +1 -0
- package/_esm/chains/definitions/lumozTestnet.js +17 -0
- package/_esm/chains/definitions/lumozTestnet.js.map +1 -0
- package/_esm/chains/definitions/newton.js +23 -0
- package/_esm/chains/definitions/newton.js.map +1 -0
- package/_esm/chains/definitions/peaq.js +38 -0
- package/_esm/chains/definitions/peaq.js.map +1 -0
- package/_esm/chains/definitions/polynomial.js +28 -0
- package/_esm/chains/definitions/polynomial.js.map +1 -0
- package/_esm/chains/definitions/polynomialSepolia.js +28 -0
- package/_esm/chains/definitions/polynomialSepolia.js.map +1 -0
- package/_esm/chains/definitions/story.js +7 -0
- package/_esm/chains/definitions/story.js.map +1 -1
- package/_esm/chains/definitions/storyAeneid.js +28 -0
- package/_esm/chains/definitions/storyAeneid.js.map +1 -0
- package/_esm/chains/definitions/worldchain.js +1 -1
- package/_esm/chains/index.js +10 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/op-stack/abis.js +7 -96
- package/_esm/op-stack/abis.js.map +1 -1
- package/_esm/op-stack/actions/getWithdrawalStatus.js +25 -14
- package/_esm/op-stack/actions/getWithdrawalStatus.js.map +1 -1
- package/_esm/zksync/actions/finalizeWithdrawal.js +147 -0
- package/_esm/zksync/actions/finalizeWithdrawal.js.map +1 -0
- package/_esm/zksync/constants/abis.js +723 -0
- package/_esm/zksync/constants/abis.js.map +1 -1
- package/_esm/zksync/constants/address.js +1 -0
- package/_esm/zksync/constants/address.js.map +1 -1
- package/_esm/zksync/decorators/walletL1.js +2 -0
- package/_esm/zksync/decorators/walletL1.js.map +1 -1
- package/_esm/zksync/errors/bridge.js +9 -0
- package/_esm/zksync/errors/bridge.js.map +1 -1
- package/_esm/zksync/index.js +1 -0
- package/_esm/zksync/index.js.map +1 -1
- package/_esm/zksync/utils/bridge/getWithdrawalL2ToL1Log.js +17 -0
- package/_esm/zksync/utils/bridge/getWithdrawalL2ToL1Log.js.map +1 -0
- package/_esm/zksync/utils/bridge/getWithdrawalLog.js +17 -0
- package/_esm/zksync/utils/bridge/getWithdrawalLog.js.map +1 -0
- package/_types/chains/definitions/b3.d.ts +6 -10
- package/_types/chains/definitions/b3.d.ts.map +1 -1
- package/_types/chains/definitions/b3Sepolia.d.ts +6 -10
- package/_types/chains/definitions/b3Sepolia.d.ts.map +1 -1
- package/_types/chains/definitions/berachainTestnet.d.ts +6 -10
- package/_types/chains/definitions/berachainTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/donatuz.d.ts +1 -1
- package/_types/chains/definitions/hashkeyChainTestnet.d.ts +1 -1
- package/_types/chains/definitions/hashkeyChainTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/haustTestnet.d.ts +37 -0
- package/_types/chains/definitions/haustTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/lumoz.d.ts +37 -0
- package/_types/chains/definitions/lumoz.d.ts.map +1 -0
- package/_types/chains/definitions/lumozTestnet.d.ts +43 -0
- package/_types/chains/definitions/lumozTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/newton.d.ts +37 -0
- package/_types/chains/definitions/newton.d.ts.map +1 -0
- package/_types/chains/definitions/peaq.d.ts +34 -0
- package/_types/chains/definitions/peaq.d.ts.map +1 -0
- package/_types/chains/definitions/polynomial.d.ts +32 -0
- package/_types/chains/definitions/polynomial.d.ts.map +1 -0
- package/_types/chains/definitions/polynomialSepolia.d.ts +32 -0
- package/_types/chains/definitions/polynomialSepolia.d.ts.map +1 -0
- package/_types/chains/definitions/story.d.ts +6 -11
- package/_types/chains/definitions/story.d.ts.map +1 -1
- package/_types/chains/definitions/storyAeneid.d.ts +34 -0
- package/_types/chains/definitions/storyAeneid.d.ts.map +1 -0
- package/_types/chains/definitions/worldchain.d.ts +1 -1
- package/_types/chains/index.d.ts +10 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/op-stack/abis.d.ts +7 -77
- package/_types/op-stack/abis.d.ts.map +1 -1
- package/_types/op-stack/actions/getWithdrawalStatus.d.ts.map +1 -1
- package/_types/zksync/actions/finalizeWithdrawal.d.ts +73 -0
- package/_types/zksync/actions/finalizeWithdrawal.d.ts.map +1 -0
- package/_types/zksync/constants/abis.d.ts +567 -0
- package/_types/zksync/constants/abis.d.ts.map +1 -1
- package/_types/zksync/constants/address.d.ts +1 -0
- package/_types/zksync/constants/address.d.ts.map +1 -1
- package/_types/zksync/decorators/walletL1.d.ts +31 -0
- package/_types/zksync/decorators/walletL1.d.ts.map +1 -1
- package/_types/zksync/errors/bridge.d.ts +9 -0
- package/_types/zksync/errors/bridge.d.ts.map +1 -1
- package/_types/zksync/index.d.ts +1 -0
- package/_types/zksync/index.d.ts.map +1 -1
- package/_types/zksync/utils/bridge/getWithdrawalL2ToL1Log.d.ts +20 -0
- package/_types/zksync/utils/bridge/getWithdrawalL2ToL1Log.d.ts.map +1 -0
- package/_types/zksync/utils/bridge/getWithdrawalLog.d.ts +20 -0
- package/_types/zksync/utils/bridge/getWithdrawalLog.d.ts.map +1 -0
- package/chains/definitions/b3.ts +6 -0
- package/chains/definitions/b3Sepolia.ts +6 -0
- package/chains/definitions/berachainTestnet.ts +6 -0
- package/chains/definitions/donatuz.ts +1 -1
- package/chains/definitions/hashkeyChainTestnet.ts +1 -0
- package/chains/definitions/haustTestnet.ts +23 -0
- package/chains/definitions/lumoz.ts +23 -0
- package/chains/definitions/lumozTestnet.ts +17 -0
- package/chains/definitions/newton.ts +23 -0
- package/chains/definitions/peaq.ts +38 -0
- package/chains/definitions/polynomial.ts +28 -0
- package/chains/definitions/polynomialSepolia.ts +28 -0
- package/chains/definitions/story.ts +7 -0
- package/chains/definitions/storyAeneid.ts +28 -0
- package/chains/definitions/worldchain.ts +1 -1
- package/chains/index.ts +10 -0
- package/errors/version.ts +1 -1
- package/op-stack/abis.ts +7 -96
- package/op-stack/actions/getWithdrawalStatus.ts +28 -17
- package/package.json +1 -1
- package/zksync/actions/finalizeWithdrawal.ts +248 -0
- package/zksync/constants/abis.ts +724 -0
- package/zksync/constants/address.ts +3 -0
- package/zksync/decorators/walletL1.ts +48 -0
- package/zksync/errors/bridge.ts +17 -0
- package/zksync/index.ts +6 -0
- package/zksync/utils/bridge/getWithdrawalL2ToL1Log.ts +47 -0
- 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
|
}
|
package/zksync/errors/bridge.ts
CHANGED
@@ -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
|
+
}
|