Design the OOP model for a dark store inventory system used in Zepto's 10-minute delivery model.
receiveStock(productId, qty, storeId) — inbound from supplierreserveItem(orderId, productId, qty, storeId) — reserves stock on orderconfirmPick(orderId) / returnToShelf(orderId) — fulfil or release reservationgetLowStockProducts(storeId, threshold) — trigger reordertransferStock(fromStore, toStore, productId, qty)DarkStore, Product, StockLedger, Reservation, InventoryEvent
Add expiry tracking for perishables (FEFO — first expired, first out).