## Overview Implement the detokenization proposal and voting system inside `contracts/contrib/`. ## Location All work must be inside `contracts/contrib/src/detokenization.rs`. ## Acceptance Criteria - [ ] `DetokenizationProposal` struct: `proposal_id`, `asset_id`, `proposer`, `deadline`, `status: DetokenizationStatus` (Active, Executed, Rejected) - [ ] `propose_detokenization(env, asset_id, deadline)` — any token holder may propose; requires minimum token balance; creates proposal via voting contract; emits proposal event - [ ] `vote_on_detokenization(env, asset_id, proposal_id, voter, support)` — delegates to voting contract `cast_vote` - [ ] `get_detokenization_proposal(env, asset_id) -> DetokenizationProposal` — returns active proposal
Overview
Implement the detokenization proposal and voting system inside
contracts/contrib/.Location
All work must be inside
contracts/contrib/src/detokenization.rs.Acceptance Criteria
DetokenizationProposalstruct:proposal_id,asset_id,proposer,deadline,status: DetokenizationStatus(Active, Executed, Rejected)propose_detokenization(env, asset_id, deadline)— any token holder may propose; requires minimum token balance; creates proposal via voting contract; emits proposal eventvote_on_detokenization(env, asset_id, proposal_id, voter, support)— delegates to voting contractcast_voteget_detokenization_proposal(env, asset_id) -> DetokenizationProposal— returns active proposal