**Description:** Model the donation lifecycle as an explicit state machine in Rust. **Tasks:** - [ ] Create `src/models/donation_status.rs` - [ ] Define `DonationStatus` enum: `Pending`, `Submitted`, `Confirming`, `Confirmed`, `Failed`, `Refunded` - [ ] Implement `DonationStatus::transition(event: DonationEvent) -> Result<DonationStatus, TransitionError>` - [ ] Reject invalid state transitions (e.g. `Confirmed → Pending`) - [ ] Use this state machine in all donation update flows **Acceptance Criteria:** Invalid state transitions return an error; valid transitions update the status correctly. ---
Description:
Model the donation lifecycle as an explicit state machine in Rust.
Tasks:
src/models/donation_status.rsDonationStatusenum:Pending,Submitted,Confirming,Confirmed,Failed,RefundedDonationStatus::transition(event: DonationEvent) -> Result<DonationStatus, TransitionError>Confirmed → Pending)Acceptance Criteria:
Invalid state transitions return an error; valid transitions update the status correctly.