class KrakenOrder {

  private final String refId;
  private final String userRefId;
  private final KrakenOrderStatus status;
  private final double openTimestamp;
  private final double startTimestamp;
  private final double expireTimestamp;
  private final KrakenOrderDescription orderDescription;
  private final BigDecimal volume;
  private final BigDecimal volumeExecuted;
  private final BigDecimal cost;
  private final BigDecimal fee;
  private final BigDecimal price;
  private final BigDecimal stopPrice;
  private final BigDecimal limitPrice;
  private final String miscellaneous;
  private final Set<KrakenOrderFlags> orderFlags;
  private final List<String> tradeIds;
  private final double closeTimestamp;
  private final String closeReason;

  /**
   * Constructor
   *
   * @param refId
   * @param userRefId
   * @param status
   * @param openTimestamp
   * @param startTimestamp
   * @param expireTimestamp
   * @param orderDescription
   * @param volume
   * @param volumeExecuted
   * @param cost
   * @param fee
   * @param price
   * @param stopPrice
   * @param limitPrice
   * @param misc
   * @param orderFLags
   * @param tradeIds
   * @param closeTimestamp
   * @param closeReason
   */
  public KrakenOrder(
      @JsonProperty("refid") String refId,
      @JsonProperty("userref") String userRefId,
      @JsonProperty("status") KrakenOrderStatus status,
      @JsonProperty("opentm") double openTimestamp,
      @JsonProperty("starttm") double startTimestamp,
      @JsonProperty("expiretm") double expireTimestamp,
      @JsonProperty("descr") KrakenOrderDescription orderDescription,
      @JsonProperty("vol") BigDecimal volume,
      @JsonProperty("vol_exec") BigDecimal volumeExecuted,
      @JsonProperty("cost") BigDecimal cost,
      @JsonProperty("fee") BigDecimal fee,
      @JsonProperty("price") BigDecimal price,
      @JsonProperty("stopprice") BigDecimal stopPrice,
      @JsonProperty("limitprice") BigDecimal limitPrice,
      @JsonProperty("misc") String misc,
      @JsonProperty("oflags") @JsonDeserialize(using = KrakenOrderFlagsDeserializer.class)
          Set<KrakenOrderFlags> orderFLags,
      @JsonProperty("trades") List<String> tradeIds,
      @JsonProperty("closetm") double closeTimestamp,
      @JsonProperty("reason") String closeReason) {

    this.refId = refId;
    this.userRefId = userRefId;
    this.status = status;
    this.openTimestamp = openTimestamp;
    this.startTimestamp = startTimestamp;
    this.expireTimestamp = expireTimestamp;
    this.orderDescription = orderDescription;
    this.volume = volume;
    this.volumeExecuted = volumeExecuted;
    this.cost = cost;
    this.fee = fee;
    this.price = price;
    this.stopPrice = stopPrice;
    this.limitPrice = limitPrice;
    this.miscellaneous = misc;
    this.orderFlags = orderFLags;
    this.tradeIds = tradeIds;
    this.closeTimestamp = closeTimestamp;
    this.closeReason = closeReason;
  }

  public KrakenOrderDescription getOrderDescription() {

    return orderDescription;
  }

  public String getRefId() {

    return refId;
  }

  public String getUserRefId() {

    return userRefId;
  }

  public KrakenOrderStatus getStatus() {

    return status;
  }

  public double getOpenTimestamp() {

    return openTimestamp;
  }

  public double getStartTimestamp() {

    return startTimestamp;
  }

  public double getExpireTimestamp() {

    return expireTimestamp;
  }

  public BigDecimal getVolume() {

    return volume;
  }

  public BigDecimal getVolumeExecuted() {

    return volumeExecuted;
  }

  public BigDecimal getCost() {

    return cost;
  }

  public BigDecimal getFee() {

    return fee;
  }

  public BigDecimal getPrice() {

    return price;
  }

  public BigDecimal getStopPrice() {

    return stopPrice;
  }

  public BigDecimal getLimitPrice() {

    return limitPrice;
  }

  public String getMiscellaneous() {

    return miscellaneous;
  }

  public Set<KrakenOrderFlags> getOrderFlags() {

    return orderFlags;
  }

  public List<String> getTradeIds() {

    return tradeIds;
  }

  public double getCloseTimestamp() {

    return closeTimestamp;
  }

  public String getCloseReason() {

    return closeReason;
  }

  @Override
  public String toString() {<FILL_FUNCTION_BODY>}
}


    return "KrakenOrder [refId="
        + refId
        + ", userRefId="
        + userRefId
        + ", status="
        + status
        + ", openTimestamp="
        + openTimestamp
        + ", startTimestamp="
        + startTimestamp
        + ", expireTimestamp="
        + expireTimestamp
        + ", orderDescription="
        + orderDescription
        + ", volume="
        + volume
        + ", volumeExecuted="
        + volumeExecuted
        + ", cost="
        + cost
        + ", fee="
        + fee
        + ", price="
        + price
        + ", stopPrice="
        + stopPrice
        + ", limitPrice="
        + limitPrice
        + ", miscellaneous="
        + miscellaneous
        + ", orderFlags="
        + orderFlags
        + ", tradeIds="
        + tradeIds
        + ", closeTimestamp="
        + closeTimestamp
        + ", closeReason="
        + closeReason
        + "]";
  
<no_super_class>