text: // Copyright (c) 2009-2010 Satoshi Nakamoto
  // Copyright (c) 2009-2014 The Bitcoin developers
  // Copyright (c) 2016-2019 The Bitstock developers
  // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #ifndef BITCOIN_SCRIPT_SIGN_H
  #define BITCOIN_SCRIPT_SIGN_H
  
  #include "script/interpreter.h"
  #include "key.h"
  #include "keystore.h"
  #include "script/standard.h"
  
  class CKeyStore;
  class CScript;
  class CTransaction;
  
  struct CMutableTransaction;
  
  bool Sign1(const CKeyID& address, const CKeyStore& keystore, uint256 hash, int nHashType, CScript& scriptSigRet);
  bool SignSignature(const CKeyStore& keystore, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL, bool fColdStake = false);
  bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CMutableTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL, bool fColdStake = false);
  
  /**
   * Given two sets of signatures for scriptPubKey, possibly with OP_0 placeholders,
   * combine them intelligently and return the result.
   */
  CScript CombineSignatures(const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, const CScript& scriptSig1, const CScript& scriptSig2);
  
  #endif // BITCOIN_SCRIPT_SIGN_H
  