RawTransaction.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package hera.api.model;

  5. import hera.annotation.ApiAudience;
  6. import hera.annotation.ApiStability;
  7. import hera.api.model.Transaction.TxType;
  8. import hera.spec.transaction.CreateNameTransactionBuilder;
  9. import hera.spec.transaction.DeployContractTransactionBuilder;
  10. import hera.spec.transaction.InvokeContractTransactionBuilder;
  11. import hera.spec.transaction.PlainTransactionBuilder;
  12. import hera.spec.transaction.ReDeployContractTransactionBuilder;
  13. import hera.spec.transaction.StakeTransactionBuilder;
  14. import hera.spec.transaction.UnstakeTransactionBuilder;
  15. import hera.spec.transaction.UpdateNameTransactionBuilder;
  16. import hera.spec.transaction.VoteTransactionBuilder;
  17. import hera.spec.transaction.dsl.CreateNameTransaction;
  18. import hera.spec.transaction.dsl.DeployContractTransaction;
  19. import hera.spec.transaction.dsl.InvokeContractTransaction;
  20. import hera.spec.transaction.dsl.PlainTransaction;
  21. import hera.spec.transaction.dsl.ReDeployContractTransaction;
  22. import hera.spec.transaction.dsl.StakeTransaction;
  23. import hera.spec.transaction.dsl.UnstakeTransaction;
  24. import hera.spec.transaction.dsl.UpdateNameTransaction;
  25. import hera.spec.transaction.dsl.VoteTransaction;
  26. import lombok.NonNull;
  27. import lombok.Value;

  28. @ApiAudience.Public
  29. @ApiStability.Unstable
  30. @Value
  31. public class RawTransaction {

  32.   @ApiAudience.Public
  33.   public static PlainTransaction.WithNothing newBuilder() {
  34.     return new PlainTransactionBuilder();
  35.   }

  36.   @ApiAudience.Public
  37.   public static PlainTransaction.WithChainIdHash newBuilder(final ChainIdHash chainIdHash) {
  38.     return new PlainTransactionBuilder().chainIdHash(chainIdHash);
  39.   }

  40.   @ApiAudience.Public
  41.   public static DeployContractTransaction.WithNothing newDeployContractBuilder() {
  42.     return new DeployContractTransactionBuilder();
  43.   }

  44.   @ApiAudience.Public
  45.   public static ReDeployContractTransaction.WithNothing newReDeployContractBuilder() {
  46.     return new ReDeployContractTransactionBuilder();
  47.   }

  48.   @ApiAudience.Public
  49.   public static InvokeContractTransaction.WithNothing newInvokeContractBuilder() {
  50.     return new InvokeContractTransactionBuilder();
  51.   }

  52.   @ApiAudience.Public
  53.   public static CreateNameTransaction.WithNothing newCreateNameTxBuilder() {
  54.     return new CreateNameTransactionBuilder();
  55.   }

  56.   @ApiAudience.Public
  57.   public static UpdateNameTransaction.WithNothing newUpdateNameTxBuilder() {
  58.     return new UpdateNameTransactionBuilder();
  59.   }

  60.   @ApiAudience.Public
  61.   public static StakeTransaction.WithNothing newStakeTxBuilder() {
  62.     return new StakeTransactionBuilder();
  63.   }

  64.   @ApiAudience.Public
  65.   public static UnstakeTransaction.WithNothing newUnstakeTxBuilder() {
  66.     return new UnstakeTransactionBuilder();
  67.   }

  68.   @ApiAudience.Public
  69.   public static VoteTransaction.WithNothing newVoteTxBuilder() {
  70.     return new VoteTransactionBuilder();
  71.   }

  72.   @NonNull
  73.   ChainIdHash chainIdHash;

  74.   @NonNull
  75.   AccountAddress sender;

  76.   @NonNull
  77.   AccountAddress recipient;

  78.   @NonNull
  79.   Aer amount;

  80.   long nonce;

  81.   @NonNull
  82.   Fee fee;

  83.   @NonNull
  84.   BytesValue payload;

  85.   @NonNull
  86.   TxType txType;


  87.   // remove those withers when Wither of lombok is stable.

  88.   /**
  89.    * Return a {@code RawTransaction} with new chain id hash.
  90.    *
  91.    * @param chainIdHash a chain id hash
  92.    * @return a {@code RawTransaction} instance
  93.    */
  94.   public RawTransaction withChainIdHash(final ChainIdHash chainIdHash) {
  95.     return new RawTransaction(chainIdHash, sender, recipient, amount, nonce, fee, payload, txType);
  96.   }

  97.   /**
  98.    * Return a {@code RawTransaction} with new nonce.
  99.    *
  100.    * @param nonce an new nonce
  101.    * @return a {@code RawTransaction} instance
  102.    */
  103.   public RawTransaction withNonce(final long nonce) {
  104.     return new RawTransaction(chainIdHash, sender, recipient, amount, nonce, fee, payload, txType);
  105.   }

  106. }