External inputs are currently only supported for initial transaction creation functions. Extend `solving_data` arguments as necessary to support fee bumping wallet transactions with non-wallet inputs.

https://github.com/bitcoin/bitcoin/pull/17211#issuecomment-897653994
/** Initialize this PrecomputedTransactionData with transaction data.
     *
     * @param[in]   tx             The transaction for which data is being precomputed.
     * @param[in]   spent_outputs  The CTxOuts being spent, one for each tx.vin, in order.
     * @param[in]   force          Whether to precompute data for all optional features,
     *                             regardless of what is in the inputs (used at signing
     *                             time, when the inputs aren't filled in yet). */
    template <class T>
    void Init(const T& tx, std::vector<CTxOut>&& spent_outputs, bool force = false);
    template <class T>
    explicit PrecomputedTransactionData(const T& tx);
};
enum class SigVersion
{
    BASE = 0,        
    WITNESS_V0 = 1,  
    TAPROOT = 2,     
    TAPSCRIPT = 3,   
};
struct ScriptExecutionData
{
    
    bool m_tapleaf_hash_init = false;
    
    uint256 m_tapleaf_hash;
    
    bool m_codeseparator_pos_init = false;
    
    uint32_t m_codeseparator_pos;