## Overview Implement asset lease management allowing assets to be formally leased to a lessee inside `contracts/contrib/`. ## Location All work must be inside `contracts/contrib/src/lease.rs`. ## Acceptance Criteria - [ ] `Lease` struct: `lease_id: BytesN<32>`, `asset_id: BytesN<32>`, `lessor: Address`, `lessee: Address`, `start_timestamp: u64`, `end_timestamp: u64`, `rent_per_period: i128`, `deposit: i128`, `status: LeaseStatus` (Active, Returned, Cancelled, Expired) - [ ] `create_lease(env, asset_id, lessee, start, end, rent, deposit)` — asset owner only; stores lease; emits event - [ ] `check_in_lease(env, lease_id)` — lessor only; sets status to Returned and records return time - [ ] `cancel_lease(env, lease_id)` — lessor or admin; sets status to Cancelled - [ ] `get_active_leases(env, asset_id) -> Vec<Lease>`
Overview
Implement asset lease management allowing assets to be formally leased to a lessee inside
contracts/contrib/.Location
All work must be inside
contracts/contrib/src/lease.rs.Acceptance Criteria
Leasestruct:lease_id: BytesN<32>,asset_id: BytesN<32>,lessor: Address,lessee: Address,start_timestamp: u64,end_timestamp: u64,rent_per_period: i128,deposit: i128,status: LeaseStatus(Active, Returned, Cancelled, Expired)create_lease(env, asset_id, lessee, start, end, rent, deposit)— asset owner only; stores lease; emits eventcheck_in_lease(env, lease_id)— lessor only; sets status to Returned and records return timecancel_lease(env, lease_id)— lessor or admin; sets status to Cancelledget_active_leases(env, asset_id) -> Vec<Lease>