pub mod acquisition;
pub mod benchmark;
pub mod comparable_sales;
pub mod highest_best_use;
pub mod rent_roll;
pub mod replacement_cost;
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use crate::types::{Money, Rate};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PropertyType {
Office,
Retail,
Industrial,
Multifamily,
Hotel,
MixedUse,
DataCenter,
LifeScience,
SelfStorage,
SeniorHousing,
StudentHousing,
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PropertyClass {
ClassA,
ClassB,
ClassC,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Market {
pub city: String,
pub submarket: Option<String>,
pub state_or_region: Option<String>,
pub country: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PropertySummary {
pub name: String,
pub property_type: PropertyType,
pub property_class: PropertyClass,
pub market: Market,
pub gross_area_sf: Decimal,
pub net_rentable_area_sf: Decimal,
pub year_built: i32,
pub unit_count: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValuationMetrics {
pub indicated_value: Money,
pub value_per_sf: Money,
pub implied_cap_rate: Rate,
pub going_in_yield: Option<Rate>,
}