How to create unsigned tx in a watch-only wallet? UPDATE: The issue is resolved and I have mentioned the steps in Create unsigned tx (PSBT) in a watch-only wallet using bitcoin core, sign it in electrum and broadcast using bitcoin core
Below are the steps that I followed and couldn't create an unsigned tx. I am not even sure what are the inputs that can be used for it in this case and how to add inputs.
create a watch-only wallet

add one address in 'sending addresses'

dont see anything in 'receiving addresses' and no option to add

open console and run the below commands to add one address
importaddress tb1qu2l4n8st9w3hhsxstd8muaxgnu63fql9rkylmd "receivetesting" false
rescan blockchain to update
rescanblockchain 1800000 1834770
can see the address in 'receiving addresses' and balance

How do I create an unsigned tx because I get the below error and dont see anything in available balance or inputs?
Consider the scenario in which I have added an address from my cold storage to watch the balance and now want to create an unsigned transaction that spends from it which I will sign later on a different machine (offline)
Also receiving and sending addresses in a watch-only wallet is confusing. Not sure at this moment how can we make it easier to understand atleast in the GUI.

I found this on reddit related to same issue however didn't understand how was it resolved: https://www.reddit.com/r/Bitcoin/comments/ir308h/watch_only_balance_not_spendable_in_bitcoin_core/g4w3svg/
Hi it's moral_agent from the reddit post.
https://www.reddit.com/r/Bitcoin/comments/ir308h/watch_only_balance_not_spendable_in_bitcoin_core/g5gg33f/
I do not know whether this will help you or not but I will tell you what helped me and what I think I was doing wrong.
In order to create a PSBT that spends a watch-only output, it is not always sufficient to import the address of the output.
For a pay-to-script-hash address you will also need to import the script of the output. This makes sense, since creating a valid P2SH transaction requires that you include (and satisfy) the script. Your cold-signing wallet is only expected to supply the signature, not the script, so the PSBT needs to contain that information, so your hot computer must have it to create a PSBT.
I was able to import the required script by doing importmulti. I actually didn't import the script, I imported the script descriptor sort of like this:
importmulti &quot;[{ &quot;desc&quot;: &quot;sh(multi(2,BLAH-BLAH-HEX))&quot; }]
I didn't check that syntax for bugs so you're on your own there. Importmulti takes a bunch of args, most of which are optional.
I got the output descriptor for the address I was trying to spend from by runnning getaddressinfo on the address on the computer where the address was originally generated, and which therefore knew what the script was.
Hope that helps. Let me know if you have success!