Personal

import scodec.bits.ByteVector
import jbok.core.models.Address
import jbok.common.math.N

trait PersonalAPI[F[_]] {
  def importRawKey(privateKey: ByteVector, passphrase: String): F[Address]

  def newAccount(passphrase: String): F[Address]

  def delAccount(address: Address): F[Boolean]

  def listAccounts: F[List[Address]]

  def changePassphrase(address: Address, oldPassphrase: String, newPassphrase: String): F[Boolean]

  def sendTransaction(
      from: Address,
      passphrase: String,
      to: Option[Address] = None,
      value: Option[N] = None,
      gasLimit: Option[N] = None,
      gasPrice: Option[N] = None,
      nonce: Option[N] = None,
      data: Option[ByteVector] = None,
  ): F[ByteVector]
}