code: func (c *Client) SignRawTransaction4(tx *wire.MsgTx,
  	inputs []btcjson.RawTxInput, privKeysWIF []string,
  	hashType SigHashType) (*wire.MsgTx, bool, error) {
  
  	return c.SignRawTransaction4Async(tx, inputs, privKeysWIF,
  		hashType).Receive()
  }
docs: // SignRawTransaction4 signs inputs for the passed transaction using the
  // the specified signature hash type given the list of information about extra
  // input transactions and a potential list of private keys needed to perform
  // the signing process.  The private keys, if specified, must be in wallet
  // import format (WIF).
  //
  // The only input transactions that need to be specified are ones the RPC server
  // does not already know.  This means the list of transaction inputs can be nil
  // if the RPC server already knows them all.
  //
  // NOTE: Unlike the merging functionality of the input transactions, ONLY the
  // specified private keys will be used, so even if the server already knows some
  // of the private keys, they will NOT be used.  The list of private keys can be
  // nil in which case any private keys the RPC server knows will be used.
  //
  // This function should only used if a non-default signature hash type is
  // desired.  Otherwise, see SignRawTransaction if the RPC server already knows
  // the input transactions and private keys, SignRawTransaction2 if it already
  // knows the private keys, or SignRawTransaction3 if it does not know both.