Adds a dedicated Soroban event for milestone state changes to allow indexers to track milestone lifecycle updates.
- Topic:
symbol_short!("ms_state")(7 characters, unique across contract events) - Topics Payload: (
ms_state,contract_id,milestone_id) - Data Payload:
Milestone { amount, released }
- Added
EscrowStatestruct for persistent state storage - Implemented full contract logic in
create_contract,deposit_funds, andrelease_milestone - Added
emit_milestone_state_changehelper function that emits Soroban event - Added comprehensive test
test_release_milestone_eventto verify event emission and payload correctness - Verified no collisions with existing events
- No changes were made to underlying fund movement or financial settlement logic (token transfers are still placeholders for future implementation)
<insert cargo test output here>