Persist the result before completeSwap to support NUT-19 replay safety: a preview rehydrated
with deserializeSwapPreview replays a byte-identical swap request.
The result holds inputs in the clear, so it is spendable bearer material: store it as carefully
as the proof database. unselectedProofs take no part in the replay and are not included; return
them to storage separately.
Converts a swap preview to a JSON-safe form for persistence.