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
: pwallet(pwallet)
      , type(type) { }
    ReserveDestination(const ReserveDestination&) = delete;
    ReserveDestination& operator=(const ReserveDestination&) = delete;
    
    ~ReserveDestination()
    {
        ReturnDestination();
    }
    
    bool GetReservedDestination(CTxDestination& pubkey, bool internal, bilingual_str& error);
    
    void ReturnDestination();
    
    void KeepDestination();
};
class CAddressBookData