import { Provider } from "@ethersproject/providers"; import { Wallet } from "@ethersproject/wallet"; import { BigNumberish, providers } from "ethers"; import { LaserWallet, LaserHelper } from "../typechain"; import { Address, OffChainTransaction } from "../types"; import { ILaser } from "./interfaces/ILaser"; import { WalletState } from "../types"; /** * @title Laser * * @notice Class to interact with a Laser smart wallet. */ export declare class Laser implements ILaser { readonly provider: Provider; readonly signer: Wallet; readonly wallet: LaserWallet; laserHelper: LaserHelper; chainId: Number; initialized: boolean; constructor(_provider: Provider, _signer: Wallet, walletAddress: string); /** * @dev Inits Laser with proper state. */ init(): Promise; /** * @dev Sends a complete transaction. * The transaction must be already signed and verified. * */ execTransaction(transaction: OffChainTransaction, sender: Wallet, gasLimit: number): Promise; /** * @dev Returns the core state of a Laser wallet 'WalletState' in a single rpc call. */ getWalletState(): Promise; /** * @dev Unlocks the wallet, can only be signed by the owner, guardian, or recovery owner. */ unlockWallet(nonce: BigNumberish): Promise; /** * @dev Recovers the wallet, can only be signed by the recovery owner or guardian. */ recover(_newOwner: Address, nonce: BigNumberish): Promise; /** * @dev Changes the owner, can only be signed by the owner + recovery owner or owner + guardian. */ changeOwner(_newOwner: Address, nonce: BigNumberish): Promise; /** * @dev Adds a guardian, can only be signed by the owner + recovery owner or owner + guardian. */ addGuardian(_newGuardian: Address, nonce: BigNumberish): Promise; /** * @dev Removes a guardian, can only be signed by the owner + recovery owner or owner + guardian. */ removeGuardian(_guardian: Address, nonce: BigNumberish): Promise; /** * @dev Adds a recovery owner, can only be signed by the owner + recovery owner or owner + guardian. */ addRecoveryOwner(_newRecoveryOwner: Address, nonce: BigNumberish): Promise; /** * @dev Removes a recovery owner, can only be signed by the owner + recovery owner or owner + guardian. */ removeRecoveryOwner(_recoveryOwner: Address, nonce: BigNumberish): Promise; /** * @dev Sends eth, can only be signed by the owner + recovery owner or owner + guardian. */ sendEth(_to: Address, _amount: BigNumberish, nonce: BigNumberish): Promise; /** * @dev Transfers ERC20, can only be signed by the owner + recovery owner or owner + guardian. */ transferERC20(_tokenAddress: Address, _to: Address, amount: BigNumberish, nonce: BigNumberish): Promise; /** * @dev Signs a transaction that is sent through 'exec'. */ signTransaction(to: Address, value: BigNumberish, callData: string, nonce: BigNumberish): Promise; }