# Source: src/main/js/daemon/model/MoneroAltChain.js

    const BigInteger = require("../../common/biginteger").BigInteger;

    /**
     * Models an alternative chain seen by the node.
     */
    class MoneroAltChain {

      constructor(state) {
        state = Object.assign({}, state);
        if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);
        this.state = state;
      }

      toJson() {
        let json = Object.assign({}, this.state);
        if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();
        return json;
      }

      getBlockHashes(blockHashes) {
        return this.state.blockHashes;
      }

      setBlockHashes(blockHashes) {
        this.state.blockHashes = blockHashes;
        return this;
      }

      getDifficulty() {
        return this.state.difficulty;
      }

      setDifficulty(difficulty) {
        this.state.difficulty = difficulty;
        return this;
      }

      getHeight() {
        return this.state.height;
      }

      setHeight(height) {
        this.state.height = height;
        return this;
      }

      getLength() {
        return this.state.length;
      }

      setLength(length) {
        this.state.length = length;
        return this;
      }

      getMainChainParentBlockHash() {
        return this.state.mainChainParentBlockHash;
      }

      setMainChainParentBlockHash(mainChainParentBlockHash) {
        this.state.mainChainParentBlockHash = mainChainParentBlockHash;
        return this;
      }
    }

    module.exports = MoneroAltChain;