GenesisConfig.java

package com.syntifi.near.api.model.protocol;

import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.syntifi.near.api.model.network.Validator;

import lombok.Getter;
import lombok.Setter;

/**
 * @author Alexandre Carvalho
 * @author Andre Bertolace
 * @since 0.0.1
 */
@Getter
@Setter
public class GenesisConfig {
    @JsonProperty("protocol_version")
    private long protocolVersion;

    @JsonProperty("genesis_time")
    private String genesisTime;

    @JsonProperty("chain_id")
    private String chainId;

    @JsonProperty("genesis_height")
    private long genesisHeight;

    @JsonProperty("num_block_producer_seats")
    private long numBlockProducerSeats;

    @JsonProperty("num_block_producer_seats_per_shard")
    private Collection<Long> numBlockProducerSeatsPerShard;

    @JsonProperty("avg_hidden_validator_seats_per_shard")
    private Collection<Long> avgHiddenValidatorSeatsPerShard;

    @JsonProperty("dynamic_resharding")
    private boolean dynamicResharding;

    @JsonProperty("protocol_upgrade_stake_threshold")
    private Collection<Long> protocolUpgradeStakeThreshold;

    @JsonProperty("protocol_upgrade_num_epochs")
    private long protocolUpgradeNumEpochs;

    @JsonProperty("epoch_length")
    private long epochLength;

    @JsonProperty("gas_limit")
    private long gasLimit;

    @JsonProperty("min_gas_price")
    private String minGasPrice;

    @JsonProperty("max_gas_price")
    private String maxGasPrice;

    @JsonProperty("block_producer_kickout_threshold")
    private long blockProducerKickoutThreshold;

    @JsonProperty("chunk_producer_kickout_threshold")
    private long chunkProducerKickoutThreshold;

    @JsonProperty("online_min_threshold")
    private Collection<Long> onlineMinThreshold;

    @JsonProperty("online_max_threshold")
    private Collection<Long> onlineMaxThreshold;

    @JsonProperty("gas_price_adjustment_rate")
    private Collection<Long> gasPriceAdjustmentRate;

    @JsonProperty("runtime_config")
    @JsonInclude(value = Include.NON_NULL)
    private RuntimeConfig runtimeConfig;

    @JsonProperty("validators")
    private Collection<Validator> validators;

    @JsonProperty("transaction_validity_period")
    private long transactionValidityPeriod;

    @JsonProperty("protocol_reward_rate")
    private Collection<Long> protocolRewardRate;

    @JsonProperty("max_inflation_rate")
    private Collection<Long> maxInflationRate;

    @JsonProperty("total_supply")
    private String totalSupply;

    @JsonProperty("num_blocks_per_year")
    private long numBlocksPerYear;

    @JsonProperty("protocol_treasury_account")
    private String protocolTreasuryAccount;

    @JsonProperty("fishermen_threshold")
    private String fishermenThreshold;

    @JsonProperty("minimum_stake_divisor")
    private long minimumStakeDivisor;

    @JsonProperty("shard_layout")
    private ShardLayout shardLayout;

    @JsonProperty("simple_nightshade_shard_layout")
    private SimpleNightShadeShardLayout simpleNightshadeShardLayout;

    @JsonProperty("minimum_stake_ratio")
    private Collection<Long> minimumStakeRatio;
}