prepare_psbt requires no changes be done to the internal psbt after apply_fee is called. These two should be separated into something like ProvisionalProposal, from which inputs/outputs can be changed until apply_fee is called, which returns PayjoinProposal from which the Payjoin Proposal PSBT can be extracted.
prepare_psbtrequires no changes be done to the internal psbt afterapply_feeis called. These two should be separated into something likeProvisionalProposal, from which inputs/outputs can be changed untilapply_feeis called, which returnsPayjoinProposalfrom which the Payjoin Proposal PSBT can be extracted.