import { BigNumber, BigNumberish, Contract, ContractTransaction, ethers } from 'ethers'; import { EthMessageSigner } from './eth-message-signer'; import { SyncProvider } from './provider-interface'; import { BatchBuilder, BatchBuilderInternalTx } from './batch-builder'; import { AccountState, Address, ChangePubkeyTypes, NFT, Nonce, Order, PubKeyHash, SignedTransaction, TokenLike, TxEthSignature, TokenRatio, WeiRatio, Toggle2FARequest } from './types'; import { Transaction, ETHOperation } from './operations'; export declare abstract class AbstractWallet { cachedAddress: Address; accountId?: number; provider: SyncProvider; protected constructor(cachedAddress: Address, accountId?: number); connect(provider: SyncProvider): this; /** * Returns the current Ethereum signer connected to this wallet. */ abstract ethSigner(): ethers.Signer; /** * Returns the current Ethereum **message** signer connected to this wallet. * * Ethereum message signer differs from common Ethereum signer in that message signer * returns Ethereum signatures along with its type (e.g. ECDSA / EIP1271). */ abstract ethMessageSigner(): EthMessageSigner; /** * Returns `true` if this wallet instance has a connected L2 signer. */ abstract syncSignerConnected(): boolean; /** * Returns the PubKeyHash that current *signer* uses * (as opposed to the one set in the account). */ abstract syncSignerPubKeyHash(): Promise; address(): Address; getCurrentPubKeyHash(): Promise; getNonce(nonce?: Nonce): Promise; getAccountId(): Promise; getAccountState(): Promise; resolveAccountId(): Promise; isCorrespondingSigningKeySet(): Promise; isSigningKeySet(): Promise; getNFT(tokenId: number, type?: 'committed' | 'verified'): Promise; getBalance(token: TokenLike, type?: 'committed' | 'verified'): Promise; getEthereumBalance(token: TokenLike): Promise; /** * Creates a batch builder instance. * * @param nonce Nonce that should be used as the nonce of the first transaction in the batch. * @returns Batch builder object */ batchBuilder(nonce?: Nonce): BatchBuilder; /** * Internal method used to process transactions created via batch builder. * Should not be used directly. */ abstract processBatchBuilderTransactions(startNonce: Nonce, txs: BatchBuilderInternalTx[]): Promise<{ txs: SignedTransaction[]; signature?: TxEthSignature; }>; abstract signSyncTransfer(transfer: { to: Address; token: TokenLike; amount: BigNumberish; fee: BigNumberish; nonce: number; validFrom?: number; validUntil?: number; }): Promise; abstract syncTransfer(transfer: { to: Address; token: TokenLike; amount: BigNumberish; fee?: BigNumberish; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; abstract signSetSigningKey(changePubKey: { feeToken: TokenLike; fee: BigNumberish; nonce: number; ethAuthType: ChangePubkeyTypes; batchHash?: string; validFrom?: number; validUntil?: number; }): Promise; abstract setSigningKey(changePubKey: { feeToken: TokenLike; ethAuthType: ChangePubkeyTypes; fee?: BigNumberish; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; abstract signWithdrawFromSyncToEthereum(withdraw: { ethAddress: string; token: TokenLike; amount: BigNumberish; fee: BigNumberish; nonce: number; validFrom?: number; validUntil?: number; }): Promise; abstract withdrawFromSyncToEthereum(withdraw: { ethAddress: string; token: TokenLike; amount: BigNumberish; fee?: BigNumberish; nonce?: Nonce; fastProcessing?: boolean; validFrom?: number; validUntil?: number; }): Promise; abstract signSyncForcedExit(forcedExit: { target: Address; token: TokenLike; fee: BigNumberish; nonce: number; validFrom?: number; validUntil?: number; }): Promise; abstract syncForcedExit(forcedExit: { target: Address; token: TokenLike; fee?: BigNumberish; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; signLimitOrder(order: { tokenSell: TokenLike; tokenBuy: TokenLike; ratio: TokenRatio | WeiRatio; recipient?: Address; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; abstract signOrder(order: { tokenSell: TokenLike; tokenBuy: TokenLike; ratio: TokenRatio | WeiRatio; amount: BigNumberish; recipient?: Address; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; abstract signSyncSwap(swap: { orders: [Order, Order]; feeToken: number; amounts: [BigNumberish, BigNumberish]; nonce: number; fee: BigNumberish; }): Promise; abstract syncSwap(swap: { orders: [Order, Order]; feeToken: TokenLike; amounts?: [BigNumberish, BigNumberish]; nonce?: number; fee?: BigNumberish; }): Promise; abstract signMintNFT(mintNFT: { recipient: string; contentHash: string; feeToken: TokenLike; fee: BigNumberish; nonce: number; }): Promise; abstract mintNFT(mintNFT: { recipient: Address; contentHash: ethers.BytesLike; feeToken: TokenLike; fee?: BigNumberish; nonce?: Nonce; }): Promise; abstract signWithdrawNFT(withdrawNFT: { to: string; token: number; feeToken: TokenLike; fee: BigNumberish; nonce: number; validFrom?: number; validUntil?: number; }): Promise; abstract withdrawNFT(withdrawNFT: { to: string; token: number; feeToken: TokenLike; fee?: BigNumberish; nonce?: Nonce; fastProcessing?: boolean; validFrom?: number; validUntil?: number; }): Promise; abstract syncTransferNFT(transfer: { to: Address; token: NFT; feeToken: TokenLike; fee?: BigNumberish; nonce?: Nonce; validFrom?: number; validUntil?: number; }): Promise; abstract syncMultiTransfer(transfers: { to: Address; token: TokenLike; amount: BigNumberish; fee: BigNumberish; nonce?: Nonce; validFrom?: number; validUntil?: number; }[]): Promise; getToggle2FA(enable: boolean, pubKeyHash?: PubKeyHash): Promise; toggle2FA(enable: boolean, pubKeyHash?: PubKeyHash): Promise; approveERC20TokenDeposits(token: TokenLike, max_erc20_approve_amount?: BigNumber): Promise; depositToSyncFromEthereum(deposit: { depositTo: Address; token: TokenLike; amount: BigNumberish; ethTxOptions?: ethers.providers.TransactionRequest; approveDepositAmountForERC20?: boolean; }): Promise; onchainAuthSigningKey(nonce?: Nonce, ethTxOptions?: ethers.providers.TransactionRequest): Promise; emergencyWithdraw(withdraw: { token: TokenLike; accountId?: number; ethTxOptions?: ethers.providers.TransactionRequest; }): Promise; emergencyWithdrawNFT(withdrawNFT: { tokenId: number; accountId?: number; ethTxOptions?: ethers.providers.TransactionRequest; }): Promise; signRegisterFactory(factoryAddress: Address): Promise<{ signature: TxEthSignature; accountId: number; accountAddress: Address; }>; isOnchainAuthSigningKeySet(nonce?: Nonce): Promise; isERC20DepositsApproved(token: TokenLike, erc20ApproveThreshold?: BigNumber): Promise; getZkSyncMainContract(): Contract; protected verifyNetworks(): Promise; protected modifyEthersError(error: any): never; protected setRequiredAccountIdFromServer(actionName: string): Promise; }