Replaceable events are very problematic for this; I’m using 7375 for proofs and a replaceable for the wallet (which may or may not link to unspent proofs). The 7375 may tag the wallet event.
Once a proof is spent the token event where it exists must be deleted and any unspent proof published into a new one
wikifreedia.xyz/nip-cashu-wallet/f7z.io