UNPKG

zksync-ethers

Version:

A Web3 library for interacting with the ZkSync Layer 2 scaling solution.

1,257 lines 67.6 kB
import { EIP712Signer } from './signer'; import { Provider } from './provider'; import { BigNumberish, BlockTag, BytesLike, ContractTransactionResponse, ethers, Overrides, ProgressCallback } from 'ethers'; import { Address, BalancesMap, FinalizeL1DepositParams, FinalizeWithdrawalParams, FullDepositFee, PaymasterParams, PriorityOpResponse, TransactionLike, TransactionRequest, TransactionResponse } from './types'; import { IBridgehub, IL1ERC20Bridge, IL1SharedBridge, IL2Bridge, IL2SharedBridge, IZkSyncHyperchain } from './typechain'; declare const Wallet_base: { new (...args: any[]): { _providerL2(): Provider; _signerL2(): ethers.Signer; getBalance(token?: string | undefined, blockTag?: BlockTag): Promise<bigint>; getAllBalances(): Promise<BalancesMap>; getDeploymentNonce(): Promise<bigint>; getL2BridgeContracts(): Promise<{ erc20: IL2Bridge; weth: IL2Bridge; shared: IL2SharedBridge; }>; _fillCustomData(data: import("./types").Eip712Meta): import("./types").Eip712Meta; withdraw(transaction: { amount: BigNumberish; token: string; to?: string | undefined; bridgeAddress?: string | undefined; paymasterParams?: PaymasterParams | undefined; overrides?: ethers.Overrides | undefined; }): Promise<TransactionResponse>; transfer(transaction: { to: string; amount: BigNumberish; token?: string | undefined; paymasterParams?: PaymasterParams | undefined; overrides?: ethers.Overrides | undefined; }): Promise<TransactionResponse>; sendTransaction(tx: ethers.TransactionRequest): Promise<ethers.TransactionResponse>; getAddress(): Promise<string>; }; } & { new (...args: any[]): { _providerL2(): Provider; _providerL1(): ethers.Provider; _signerL1(): ethers.Signer; getDefaultBridgeAddresses(): Promise<{ erc20L1: string; erc20L2: string; wethL1: string; wethL2: string; sharedL1: string; sharedL2: string; l1Nullifier: string; l1NativeTokenVault: string; }>; getMainContract(): Promise<IZkSyncHyperchain>; getBridgehubContract(): Promise<IBridgehub>; getL1BridgeContracts(): Promise<{ erc20: IL1ERC20Bridge; weth: IL1ERC20Bridge; shared: IL1SharedBridge; }>; getL1AssetRouter(address?: string | undefined): Promise<import("./typechain").IL1AssetRouter>; getL1NativeTokenVault(): Promise<import("./typechain").IL1NativeTokenVault>; getL1Nullifier(): Promise<import("./typechain").IL1Nullifier>; getBaseToken(): Promise<string>; isETHBasedChain(): Promise<boolean>; getBalanceL1(token?: string | undefined, blockTag?: BlockTag | undefined): Promise<bigint>; getAllowanceL1(token: string, bridgeAddress?: string | undefined, blockTag?: BlockTag | undefined): Promise<bigint>; l2TokenAddress(token: string): Promise<string>; l1TokenAddress(token: string): Promise<string>; approveERC20(token: string, amount: BigNumberish, overrides?: (ethers.Overrides & { bridgeAddress?: string | undefined; }) | undefined): Promise<ethers.TransactionResponse>; getBaseCost(params: { gasLimit: BigNumberish; gasPerPubdataByte?: BigNumberish | undefined; gasPrice?: BigNumberish | undefined; }): Promise<bigint>; getDepositAllowanceParams(token: string, amount: BigNumberish, overrides?: ethers.Overrides | undefined): Promise<{ token: string; allowance: BigNumberish; }[]>; deposit(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; _depositNonBaseTokenToNonETHBasedChain(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; _depositBaseTokenToNonETHBasedChain(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; _depositETHToNonETHBasedChain(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; _depositTokenToETHBasedChain(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; _depositETHToETHBasedChain(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; approveERC20?: boolean | undefined; approveBaseERC20?: boolean | undefined; l2GasLimit?: BigNumberish | undefined; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * const CONTRACT_ADDRESS = "<CONTRACT_ADDRESS>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tx = await wallet.getRequestExecuteTx({ * contractAddress: await provider.getMainContractAddress(), * calldata: "0x", * l2Value: 7_000_000_000, * }); */ gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; approveOverrides?: ethers.Overrides | undefined; approveBaseOverrides?: ethers.Overrides | undefined; customBridgeData?: BytesLike | undefined; }): Promise<PriorityOpResponse>; estimateGasDeposit(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; customBridgeData?: BytesLike | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<bigint>; getDepositTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<any>; _getDepositNonBaseTokenToNonETHBasedChainTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ tx: ethers.ContractTransaction; mintValue: bigint; }>; _getDepositBaseTokenOnNonETHBasedChainTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ tx: { token: string; amount: BigNumberish; to: string; operatorTip: BigNumberish; bridgeAddress?: string | undefined; l2GasLimit: BigNumberish; gasPerPubdataByte: BigNumberish; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides: ethers.Overrides; contractAddress: string; calldata: string; mintValue: bigint; l2Value: BigNumberish; }; mintValue: bigint; }>; _getDepositETHOnNonETHBasedChainTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ tx: ethers.ContractTransaction; mintValue: bigint; }>; _getDepositTokenOnETHBasedChainTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<ethers.ContractTransaction>; _getDepositETHOnETHBasedChainTx(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ token: string; amount: BigNumberish; to: string; operatorTip: BigNumberish; bridgeAddress?: string | undefined; l2GasLimit: BigNumberish; gasPerPubdataByte: BigNumberish; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides: ethers.Overrides; contractAddress: string; calldata: string; mintValue: BigNumberish; l2Value: BigNumberish; }>; _getSecondBridgeCalldata(token: string, amount: BigNumberish, to: string): Promise<string>; _getDepositTxWithDefaults(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ token: string; amount: BigNumberish; to: string; operatorTip: BigNumberish; bridgeAddress?: string | undefined; l2GasLimit: BigNumberish; gasPerPubdataByte: BigNumberish; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides: ethers.Overrides; }>; _getL2GasLimit(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<BigNumberish>; _getL2GasLimitFromCustomBridge(transaction: { token: string; amount: BigNumberish; to?: string | undefined; operatorTip?: BigNumberish | undefined; bridgeAddress?: string | undefined; l2GasLimit?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; customBridgeData?: BytesLike | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<BigNumberish>; getFullRequiredDepositFee(transaction: { token: string; to?: string | undefined; bridgeAddress?: string | undefined; customBridgeData?: BytesLike | undefined; gasPerPubdataByte?: BigNumberish | undefined; overrides?: ethers.Overrides | undefined; }): Promise<FullDepositFee>; getPriorityOpConfirmation(txHash: string, index?: number): Promise<{ l1BatchNumber: number; l2MessageIndex: number; l2TxNumberInBlock: number | null; proof: string[]; }>; _getWithdrawalLog(withdrawalHash: BytesLike, index?: number): Promise<{ log: import("./types").Log; l1BatchTxId: number | null; }>; _getWithdrawalL2ToL1Log(withdrawalHash: BytesLike, index?: number): Promise<{ l2ToL1LogIndex: number; l2ToL1Log: import("./types").L2ToL1Log; }>; finalizeWithdrawalParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeWithdrawalParams>; getFinalizeWithdrawalParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeWithdrawalParams>; getFinalizeDepositParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeL1DepositParams>; finalizeWithdrawal(withdrawalHash: BytesLike, index?: number, overrides?: ethers.Overrides | undefined): Promise<ContractTransactionResponse>; isWithdrawalFinalized(withdrawalHash: BytesLike, index?: number): Promise<boolean>; claimFailedDeposit(depositHash: BytesLike, overrides?: ethers.Overrides | undefined): Promise<ContractTransactionResponse>; requestExecute(transaction: { contractAddress: string; calldata: string; l2GasLimit?: BigNumberish | undefined; mintValue?: BigNumberish | undefined; l2Value?: BigNumberish | undefined; factoryDeps?: BytesLike[] | undefined; operatorTip?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<PriorityOpResponse>; estimateGasRequestExecute(transaction: { contractAddress: string; calldata: string; l2GasLimit?: BigNumberish | undefined; mintValue?: BigNumberish | undefined; l2Value?: BigNumberish | undefined; factoryDeps?: BytesLike[] | undefined; operatorTip?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<bigint>; getRequestExecuteAllowanceParams(transaction: { contractAddress: string; calldata: string; l2GasLimit?: BigNumberish | undefined; l2Value?: BigNumberish | undefined; factoryDeps?: BytesLike[] | undefined; operatorTip?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<{ token: string; allowance: BigNumberish; }>; getRequestExecuteTx(transaction: { contractAddress: string; calldata: string; l2GasLimit?: BigNumberish | undefined; mintValue?: BigNumberish | undefined; l2Value?: BigNumberish | undefined; factoryDeps?: BytesLike[] | undefined; operatorTip?: BigNumberish | undefined; gasPerPubdataByte?: BigNumberish | undefined; refundRecipient?: string | undefined; overrides?: ethers.Overrides | undefined; }): Promise<ethers.TransactionRequest>; sendTransaction(tx: ethers.TransactionRequest): Promise<ethers.TransactionResponse>; getAddress(): Promise<string>; }; } & typeof ethers.Wallet; /** * A `Wallet` is an extension of {@link ethers.Wallet} with additional features for interacting with ZKsync Era. * It facilitates bridging assets between different networks. * All transactions must originate from the address corresponding to the provided private key. */ export declare class Wallet extends Wallet_base { readonly provider: Provider; providerL1?: ethers.Provider; eip712: EIP712Signer; _providerL1(): ethers.Provider; _providerL2(): Provider; _signerL1(): ethers.Wallet; _signerL2(): Wallet; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const mainContract = await wallet.getMainContract(); */ getMainContract(): Promise<IZkSyncHyperchain>; /** * @inheritDoc * * @example * * import { Wallet, Provider, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const bridgehub = await wallet.getBridgehubContract(); */ getBridgehubContract(): Promise<IBridgehub>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const l1BridgeContracts = await wallet.getL1BridgeContracts(); */ getL1BridgeContracts(): Promise<{ erc20: IL1ERC20Bridge; weth: IL1ERC20Bridge; shared: IL1SharedBridge; }>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * * console.log(`Token balance: ${await wallet.getBalanceL1(tokenL1)}`); */ getBalanceL1(token?: Address, blockTag?: BlockTag): Promise<bigint>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x5C221E77624690fff6dd741493D735a17716c26B"; * console.log(`Token allowance: ${await wallet.getAllowanceL1(tokenL1)}`); */ getAllowanceL1(token: Address, bridgeAddress?: Address, blockTag?: BlockTag): Promise<bigint>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x5C221E77624690fff6dd741493D735a17716c26B"; * * console.log(`Token L2 address: ${await wallet.l2TokenAddress(tokenL1)}`); */ l2TokenAddress(token: Address): Promise<string>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL2 = "0xe1134444211593Cfda9fc9eCc7B43208615556E2"; * * console.log(`Token L1 address: ${await wallet.l1TokenAddress(tokenL1)}`); */ l1TokenAddress(token: Address): Promise<string>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * const tx = await wallet.approveERC20(tokenL1, "10000000"); * * await tx.wait(); */ approveERC20(token: Address, amount: BigNumberish, overrides?: Overrides & { bridgeAddress?: Address; }): Promise<ethers.TransactionResponse>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * console.log(`Base cost: ${await wallet.getBaseCost({ gasLimit: 100_000 })}`); */ getBaseCost(params: { gasLimit: BigNumberish; gasPerPubdataByte?: BigNumberish; gasPrice?: BigNumberish; }): Promise<bigint>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * console.log(`Base token: ${await wallet.getBaseToken()}`); */ getBaseToken(): Promise<string>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * console.log(`Is ETH-based chain: ${await wallet.isETHBasedChain()}`); */ isETHBasedChain(): Promise<boolean>; /** * @inheritDoc * * @example Get allowance parameters for depositing ETH on ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const token = "<L1_TOKEN>"; * const amount = 5; * const approveParams = await wallet.getDepositAllowanceParams(token, amount); * * await ( * await wallet.approveERC20( * approveParams[0].token, * approveParams[0].allowance * ) * ).wait(); * * @example Get allowance parameters for depositing ETH on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const token = utils.LEGACY_ETH_ADDRESS; * const amount = 5; * const approveParams = await wallet.getDepositAllowanceParams(token, amount); * * await ( * await wallet.approveERC20( * approveParams[0].token, * approveParams[0].allowance * ) * ).wait(); * * @example Get allowance parameters for depositing base token on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const token = await wallet.getBaseToken(); * const amount = 5; * const approveParams = await wallet.getDepositAllowanceParams(token, amount); * * await ( * await wallet.approveERC20( * approveParams[0].token, * approveParams[0].allowance * ) * ).wait(); * * @example Get allowance parameters for depositing non-base token on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const token = "<L1_TOKEN>"; * const amount = 5; * const approveParams = await wallet.getDepositAllowanceParams(token, amount); * * await ( * await wallet.approveERC20( * approveParams[0].token, * approveParams[0].allowance * ) * ).wait(); * * await ( * await wallet.approveERC20( * approveParams[1].token, * approveParams[1].allowance * ) * ).wait(); */ getDepositAllowanceParams(token: Address, amount: BigNumberish, overrides?: ethers.Overrides): Promise<{ token: Address; allowance: BigNumberish; }[]>; /** * @inheritDoc * * @example Deposit ETH on ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const depositTx = await wallet.deposit({ * token: utils.ETH_ADDRESS, * amount: 10_000_000n, * }); * // Note that we wait not only for the L1 transaction to complete but also for it to be * // processed by zkSync. If we want to wait only for the transaction to be processed on L1, * // we can use `await depositTx.waitL1Commit()` * await depositTx.wait(); * * @example Deposit token on ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * const depositTx = await wallet.deposit({ * token: tokenL1, * amount: 10_000_000n, * approveERC20: true, * }); * // Note that we wait not only for the L1 transaction to complete but also for it to be * // processed by zkSync. If we want to wait only for the transaction to be processed on L1, * // we can use `await depositTx.waitL1Commit()` * await depositTx.wait(); * * @example Deposit ETH on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const depositTx = await wallet.deposit({ * token: utils.ETH_ADDRESS, * amount: 10_000_000n, * approveBaseERC20: true, * }); * // Note that we wait not only for the L1 transaction to complete but also for it to be * // processed by zkSync. If we want to wait only for the transaction to be processed on L1, * // we can use `await depositTx.waitL1Commit()` * await depositTx.wait(); * * @example Deposit base token on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const depositTx = await wallet.deposit({ * token: await wallet.getBaseToken(), * amount: 10_000_000n, * approveERC20: true, // or approveBaseERC20: true * }); * // Note that we wait not only for the L1 transaction to complete but also for it to be * // processed by zkSync. If we want to wait only for the transaction to be processed on L1, * // we can use `await depositTx.waitL1Commit()` * await depositTx.wait(); * * @example Deposit non-base token on non-ETH-based chain. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * const depositTx = await wallet.deposit({ * token: tokenL1, * amount: 10_000_000n, * approveERC20: true, * approveBaseERC20: true, * }); * // Note that we wait not only for the L1 transaction to complete but also for it to be * // processed by zkSync. If we want to wait only for the transaction to be processed on L1, * // we can use `await depositTx.waitL1Commit()` * await depositTx.wait(); */ deposit(transaction: { token: Address; amount: BigNumberish; to?: Address; operatorTip?: BigNumberish; bridgeAddress?: Address; approveERC20?: boolean; approveBaseERC20?: boolean; l2GasLimit?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; approveOverrides?: Overrides; approveBaseOverrides?: Overrides; customBridgeData?: BytesLike; }): Promise<PriorityOpResponse>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x5C221E77624690fff6dd741493D735a17716c26B"; * const gas = await wallet.estimateGasDeposit({ * token: tokenL1, * amount: 10_000_000n, * }); * console.log(`Gas: ${gas}`); */ estimateGasDeposit(transaction: { token: Address; amount: BigNumberish; to?: Address; operatorTip?: BigNumberish; bridgeAddress?: Address; customBridgeData?: BytesLike; l2GasLimit?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; }): Promise<bigint>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * const tx = await wallet.getDepositTx({ * token: tokenL1, * amount: "10_000_000n, * }); */ getDepositTx(transaction: { token: Address; amount: BigNumberish; to?: Address; operatorTip?: BigNumberish; bridgeAddress?: Address; l2GasLimit?: BigNumberish; gasPerPubdataByte?: BigNumberish; customBridgeData?: BytesLike; refundRecipient?: Address; overrides?: Overrides; }): Promise<any>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tokenL1 = "0x56E69Fa1BB0d1402c89E3A4E3417882DeA6B14Be"; * const fee = await wallet.getFullRequiredDepositFee({ * token: tokenL1, * to: await wallet.getAddress(), * }); * console.log(`Fee: ${fee}`); */ getFullRequiredDepositFee(transaction: { token: Address; to?: Address; bridgeAddress?: Address; customBridgeData?: BytesLike; gasPerPubdataByte?: BigNumberish; overrides?: Overrides; }): Promise<FullDepositFee>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const WITHDRAWAL_HASH = "<WITHDRAWAL_TX_HASH>"; * const params = await wallet.finalizeWithdrawalParams(WITHDRAWAL_HASH); */ finalizeWithdrawalParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeWithdrawalParams>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const WITHDRAWAL_HASH = "<WITHDRAWAL_TX_HASH>"; * const params = await wallet.finalizeWithdrawalParams(WITHDRAWAL_HASH); */ getFinalizeWithdrawalParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeWithdrawalParams>; getFinalizeDepositParams(withdrawalHash: BytesLike, index?: number): Promise<FinalizeL1DepositParams>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const WITHDRAWAL_HASH = "<WITHDRAWAL_TX_HASH>"; * const finalizeWithdrawTx = await wallet.finalizeWithdrawal(WITHDRAWAL_HASH); */ finalizeWithdrawal(withdrawalHash: BytesLike, index?: number, overrides?: Overrides): Promise<ContractTransactionResponse>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const WITHDRAWAL_HASH = "<WITHDRAWAL_TX_HASH>"; * const isFinalized = await wallet.isWithdrawalFinalized(WITHDRAWAL_HASH); */ isWithdrawalFinalized(withdrawalHash: BytesLike, index?: number): Promise<boolean>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const FAILED_DEPOSIT_HASH = "<FAILED_DEPOSIT_TX_HASH>"; * const claimFailedDepositTx = await wallet.claimFailedDeposit(FAILED_DEPOSIT_HASH); */ claimFailedDeposit(depositHash: BytesLike, overrides?: Overrides): Promise<ContractTransactionResponse>; /** * @inheritDoc * * @example * * import { Wallet, Provider, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tx = { * contractAddress: await wallet.getAddress(), * calldata: '0x', * l2Value: 7_000_000_000, * }; * * const approveParams = await wallet.getRequestExecuteAllowanceParams(tx); * await ( * await wallet.approveERC20( * approveParams.token, * approveParams.allowance * ) * ).wait(); */ getRequestExecuteAllowanceParams(transaction: { contractAddress: Address; calldata: string; l2GasLimit?: BigNumberish; l2Value?: BigNumberish; factoryDeps?: BytesLike[]; operatorTip?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; }): Promise<{ token: Address; allowance: BigNumberish; }>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * const CONTRACT_ADDRESS = "<CONTRACT_ADDRESS>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tx = await wallet.requestExecute({ * contractAddress: await provider.getMainContractAddress(), * calldata: "0x", * l2Value: 7_000_000_000, * }); * await tx.wait(); */ requestExecute(transaction: { contractAddress: Address; calldata: string; l2GasLimit?: BigNumberish; mintValue?: BigNumberish; l2Value?: BigNumberish; factoryDeps?: BytesLike[]; operatorTip?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; }): Promise<PriorityOpResponse>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * const CONTRACT_ADDRESS = "<CONTRACT_ADDRESS>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const gas = await wallet.estimateGasRequestExecute({ * contractAddress: await provider.getMainContractAddress(), * calldata: "0x", * l2Value: 7_000_000_000, * }); * console.log(`Gas: ${gas}`); */ estimateGasRequestExecute(transaction: { contractAddress: Address; calldata: string; l2GasLimit?: BigNumberish; mintValue?: BigNumberish; l2Value?: BigNumberish; factoryDeps?: BytesLike[]; operatorTip?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; }): Promise<bigint>; /** * @inheritDoc * * @example * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * const CONTRACT_ADDRESS = "<CONTRACT_ADDRESS>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const tx = await wallet.getRequestExecuteTx({ * contractAddress: await provider.getMainContractAddress(), * calldata: "0x", * l2Value: 7_000_000_000, * }); */ getRequestExecuteTx(transaction: { contractAddress: Address; calldata: string; l2GasLimit?: BigNumberish; mintValue?: BigNumberish; l2Value?: BigNumberish; factoryDeps?: BytesLike[]; operatorTip?: BigNumberish; gasPerPubdataByte?: BigNumberish; refundRecipient?: Address; overrides?: Overrides; }): Promise<TransactionRequest>; /** * @inheritDoc * * @example Get ETH balance. * * import { Wallet, Provider, types, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * console.log(`ETH balance: ${await wallet.getBalance()}`); * * @example Get token balance. * * import { Wallet, Provider, utils } from "zksync-ethers"; * import { ethers } from "ethers"; * * const PRIVATE_KEY = "<WALLET_PRIVATE_KEY>"; * * const provider = Provider.getDefaultProvider(types.Network.Sepolia); * const ethProvider = ethers.getDefaultProvider("sepolia"); * const wallet = new Wallet(PRIVATE_KEY, provider, ethProvider); * * const token = "0x6a4Fb925583F7D4dF82de62d98107468aE846FD1"; * * console.log(`Token balance: ${await wallet.getBalance(token)}`); */ getBalance(token?: Address, blockTag?: BlockTag): Promi