package com.airlock.iam.transactionapproval.domain.model.cronto;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Map;
import java.util.Optional;

public final class CrontoTransactionApprovalParameters {
   private final Optional<String> title;
   private final Map<String, String> details;
   private final Optional<String> amountLabel;
   private final Optional<String> amount;
   private final Optional<String> currency;

   @SuppressFBWarnings(justification = "generated code")
   CrontoTransactionApprovalParameters(
      Optional<String> title, Map<String, String> details, Optional<String> amountLabel, Optional<String> amount, Optional<String> currency
   ) {
      this.title = title;
      this.details = details;
      this.amountLabel = amountLabel;
      this.amount = amount;
      this.currency = currency;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder builder() {
      return new CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<String> getTitle() {
      return this.title;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Map<String, String> getDetails() {
      return this.details;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<String> getAmountLabel() {
      return this.amountLabel;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<String> getAmount() {
      return this.amount;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<String> getCurrency() {
      return this.currency;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class CrontoTransactionApprovalParametersBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private Optional<String> title;
      @SuppressFBWarnings(justification = "generated code")
      private Map<String, String> details;
      @SuppressFBWarnings(justification = "generated code")
      private Optional<String> amountLabel;
      @SuppressFBWarnings(justification = "generated code")
      private Optional<String> amount;
      @SuppressFBWarnings(justification = "generated code")
      private Optional<String> currency;

      @SuppressFBWarnings(justification = "generated code")
      CrontoTransactionApprovalParametersBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder title(Optional<String> title) {
         this.title = title;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder details(Map<String, String> details) {
         this.details = details;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder amountLabel(Optional<String> amountLabel) {
         this.amountLabel = amountLabel;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder amount(Optional<String> amount) {
         this.amount = amount;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder currency(Optional<String> currency) {
         this.currency = currency;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public CrontoTransactionApprovalParameters build() {
         return new CrontoTransactionApprovalParameters(this.title, this.details, this.amountLabel, this.amount, this.currency);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "CrontoTransactionApprovalParameters.CrontoTransactionApprovalParametersBuilder(title="
            + this.title
            + ", details="
            + this.details
            + ", amountLabel="
            + this.amountLabel
            + ", amount="
            + this.amount
            + ", currency="
            + this.currency
            + ")";
      }
   }
}
