This would allow wallet operations like funding transactions with smart contract-based inputs such as LN, or any input the Core wallet doesn't know how to sign for.

https://github.com/bitcoin/bitcoin/pull/17211#issuecomment-933674310
FeeEstimateMode m_fee_mode = FeeEstimateMode::UNSET;
    
    int m_min_depth = DEFAULT_MIN_DEPTH;
    
    int m_max_depth = DEFAULT_MAX_DEPTH;
    
    FlatSigningProvider m_external_provider;
    CCoinControl();
    bool HasSelected() const
    {
        return (setSelected.size() > 0);
    }
    bool IsSelected(const COutPoint& output) const
    {
        return (setSelected.count(output) > 0);
    }
    bool IsExternalSelected(const COutPoint& output) const
    {
        return (m_external_txouts.count(output) > 0);
    }
    bool GetExternalOutput(const COutPoint& outpoint, CTxOut& txout) const
    {
        const auto ext_it = m_external_txouts.find(outpoint);
        if (ext_it == m_external_txouts.end()) {
            return false;
        }
        txout = ext_it->second;
        return true;
    }
    void Select(const COutPoint& output)