// Path: core/src/main/java/com/neemre/btcdcli4j/core/common/Defaults.java
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public final class Defaults {
// 
// 	public static final int DECIMAL_SCALE = 8;
// 	public static final RoundingMode ROUNDING_MODE = RoundingMode.HALF_UP;
// 
// 	public static final String[] NODE_VERSIONS = {"0.10.0", "0.10.1", "0.10.2", "0.10.3"};
// 	public static final String JSON_RPC_VERSION = "1.0";
// }
// 
// Path: core/src/main/java/com/neemre/btcdcli4j/core/domain/enums/ChainTypes.java
// @ToString
// @AllArgsConstructor
// @JsonInclude(Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public enum ChainTypes {
// 
// 	MAINNET("main"),
// 	TESTNET("test"),
// 	REGTEST("regtest");
// 
// 	private final String name;
// 
// 
// 	@JsonValue
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@JsonCreator
// 	public static ChainTypes forName(String name) {
// 		if (name != null) {
// 			for (ChainTypes chainType : ChainTypes.values()) {
// 				if (name.equals(chainType.getName())) {
// 					return chainType;
// 				}
// 			}
// 		}
// 		throw new IllegalArgumentException(Errors.ARGS_BTCD_CHAINTYPE_UNSUPPORTED.getDescription());
// 	}
// }


import java.math.BigDecimal;
import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.neemre.btcdcli4j.core.common.Defaults;
import com.neemre.btcdcli4j.core.domain.enums.ChainTypes;
package com.neemre.btcdcli4j.core.domain;




@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class BlockChainInfo extends Entity {

	private ChainTypes chain;
	private Integer blocks;
	private Integer headers;
	@JsonProperty("bestblockhash")
	private String bestBlockHash;
	@Setter(AccessLevel.NONE)
	private BigDecimal difficulty;
	@Setter(AccessLevel.NONE)
	@JsonProperty("verificationprogress")
	private BigDecimal verificationProgress;
	@JsonProperty("chainwork")
	private String chainWork;


// Path: core/src/main/java/com/neemre/btcdcli4j/core/common/Defaults.java
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
// public final class Defaults {
// 
// 	public static final int DECIMAL_SCALE = 8;
// 	public static final RoundingMode ROUNDING_MODE = RoundingMode.HALF_UP;
// 
// 	public static final String[] NODE_VERSIONS = {"0.10.0", "0.10.1", "0.10.2", "0.10.3"};
// 	public static final String JSON_RPC_VERSION = "1.0";
// }
// 
// Path: core/src/main/java/com/neemre/btcdcli4j/core/domain/enums/ChainTypes.java
// @ToString
// @AllArgsConstructor
// @JsonInclude(Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public enum ChainTypes {
// 
// 	MAINNET("main"),
// 	TESTNET("test"),
// 	REGTEST("regtest");
// 
// 	private final String name;
// 
// 
// 	@JsonValue
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@JsonCreator
// 	public static ChainTypes forName(String name) {
// 		if (name != null) {
// 			for (ChainTypes chainType : ChainTypes.values()) {
// 				if (name.equals(chainType.getName())) {
// 					return chainType;
// 				}
// 			}
// 		}
// 		throw new IllegalArgumentException(Errors.ARGS_BTCD_CHAINTYPE_UNSUPPORTED.getDescription());
// 	}
// }


// Path: core/src/main/java/com/neemre/btcdcli4j/core/domain/BlockChainInfo.java
import java.math.BigDecimal;
import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.neemre.btcdcli4j.core.common.Defaults;
import com.neemre.btcdcli4j.core.domain.enums.ChainTypes;

package com.neemre.btcdcli4j.core.domain;




@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class BlockChainInfo extends Entity {

	private ChainTypes chain;
	private Integer blocks;
	private Integer headers;
	@JsonProperty("bestblockhash")
	private String bestBlockHash;
	@Setter(AccessLevel.NONE)
	private BigDecimal difficulty;
	@Setter(AccessLevel.NONE)
	@JsonProperty("verificationprogress")
	private BigDecimal verificationProgress;
	@JsonProperty("chainwork")
	private String chainWork;


	public BlockChainInfo(ChainTypes chain, Integer blocks, Integer headers, String bestBlockHash,