text: // Copyright (c) 2009-2010 Satoshi Nakamoto
  // Copyright (c) 2009-2015 The Bitcoin Core developers
  // Copyright (c) 2017-2021 Thought Networks, LLC
  // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #ifndef THOUGHT_POW_H
  #define THOUGHT_POW_H
  
  #include "consensus/params.h"
  
  #include <stdint.h>
  
  class CBlockHeader;
  class CBlockIndex;
  class uint256;
  
  unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params&);
  unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Consensus::Params&);
  
  
  /** Check whether a block hash satisfies the proof-of-work requirement specified by nBits */
  bool CheckProofOfWork(const CBlockHeader& blockHeader, uint256 hash, unsigned int nBits, const Consensus::Params&);
  
  /** Check whether a cuckoo proof is valid and satisfies the proof-of-work requirement specified by nBits */
  bool CheckCuckooProofOfWork(const CBlockHeader& blockHeader, const Consensus::Params& params);
  
  #endif // THOUGHT_POW_H
  