export type Locale = 'fa' | 'en' | 'ar';
export type Localized = Partial<Record<Locale, string>>;
export type Category = 'tangible' | 'intangible' | 'investment';
export interface Project { id:string;slug:string;category:Category;status:'draft'|'published'|'archived';is_demo?:boolean;token_icon_url?:string;price_24h_ago_rial?:number|null;price_history_24h?:number[];market_updated_at?:string|null;created_at?:string;title:Localized;subtitle:Localized;description:Localized;location:Localized;image_url:string;current_return:number;unit_price_rial:number;duration_months:number;total_units:number;sold_units:number;risk:Localized;symbol:string;documents:{title:Localized;url:string}[];sort_order:number;updated_at:string; }
export interface SiteContent {hero:{eyebrow:Localized;title:Localized;accent:Localized;description:Localized;caption:Localized;background_type:'animation'|'image'|'video';media_url:string;poster_url:string;show_orbit:boolean};faq:{id:string;question:Localized;answer:Localized}[];footer:Localized;nav:{market:Localized;tokenize:Localized;resources:Localized;about:Localized};app_url:string;tokenization_url:string;logo_url:string;enabled_locales:Locale[];}
export interface Catalog {projects:Project[];content:SiteContent;mode:'preview'|'live'|'unavailable'}
export const localized=(value:Localized|undefined,locale:Locale='fa')=>value?.[locale]||value?.fa||'';
export const categoryNames:Record<Category,Localized>={tangible:{fa:'دارایی مشهود',en:'Tangible asset',ar:'أصل ملموس'},intangible:{fa:'دارایی نامشهود',en:'Intangible asset',ar:'أصل غير ملموس'},investment:{fa:'طرح سرمایه‌گذاری',en:'Investment plan',ar:'خطة استثمار'}};
export const n=(value:number,locale:Locale='fa')=>new Intl.NumberFormat(locale==='fa'?'fa-IR':locale==='ar'?'ar':'en',{maximumFractionDigits:2}).format(value);
export const money=(rial:number,locale:Locale='fa')=>n(rial/10,locale);
export function parseAmount(input:string){return Number(input.replace(/[۰-۹]/g,d=>String('۰۱۲۳۴۵۶۷۸۹'.indexOf(d))).replace(/[٠-٩]/g,d=>String('٠١٢٣٤٥٦٧٨٩'.indexOf(d))).replace(/[,٬\s]/g,''));}
export function calculateUnits(toman:number,priceRial:number){if(!Number.isFinite(toman)||toman<0||!Number.isSafeInteger(toman*10)||!Number.isSafeInteger(priceRial)||priceRial<=0)return 0;return Math.floor(toman*10/priceRial)}
export const previewProjects:Project[]=[
{id:'00000000-0000-4000-8000-000000000001',slug:'avan-residence',category:'tangible',status:'published',title:{fa:'پروژه مسکونی آوان'},subtitle:{fa:'املاک و مستغلات'},description:{fa:'فرصتی برای مشارکت در یک پروژه مسکونی از طریق واحدهای دیجیتال. اطلاعات مربوط به دارایی پایه، مراحل پروژه و شرایط مشارکت در این صفحه در دسترس قرار می‌گیرد. این پروژه برای ارزیابی طراحی سایت ساخته شده و عرضه واقعی نیست.'},location:{fa:'املاک مسکونی · پروژه نمونه'},image_url:'/images/architecture.jpg',current_return:28.4,unit_price_rial:5000000,duration_months:18,total_units:20000,sold_units:14400,risk:{fa:'ارزش دارایی ممکن است کاهش یابد. بازده گذشته تضمین‌کننده بازده آینده نیست و نقدشوندگی تابع شرایط عرضه خواهد بود.'},symbol:'AVAN',documents:[],sort_order:1,updated_at:'2026-09-07T00:00:00Z'},
{id:'00000000-0000-4000-8000-000000000002',slug:'planck-gold',category:'tangible',status:'published',title:{fa:'توکن طلای پلانک'},subtitle:{fa:'فلزات گران‌بها'},description:{fa:'نمایشی از مالکیت دیجیتال مبتنی بر طلا. مشخصات دارایی پایه، متولی نگهداری، هزینه‌ها و سازوکار تحویل باید پیش از عرضه واقعی این محصول منتشر شود.'},location:{fa:'طلا · دارایی نمونه'},image_url:'/images/gold.jpg',current_return:19.6,unit_price_rial:1450000,duration_months:12,total_units:100000,sold_units:63000,risk:{fa:'قیمت طلا نوسان دارد و امکان زیان وجود دارد. اطلاعات این نمونه نشان‌دهنده محصول تأییدشده یا عرضه فعال نیست.'},symbol:'PGOLD',documents:[],sort_order:2,updated_at:'2026-09-07T00:00:00Z'},
{id:'00000000-0000-4000-8000-000000000003',slug:'solar-horizon',category:'investment',status:'published',title:{fa:'انرژی خورشیدی افق'},subtitle:{fa:'انرژی‌های تجدیدپذیر'},description:{fa:'نمونه طرح مشارکت در توسعه نیروگاه خورشیدی. در محصول نهایی، مراحل ساخت، قرارداد فروش برق و گزارش‌های پیشرفت توسط مدیر پروژه ثبت می‌شود.'},location:{fa:'انرژی پاک · طرح نمونه'},image_url:'/images/solar.jpg',current_return:24.2,unit_price_rial:10000000,duration_months:24,total_units:50000,sold_units:20500,risk:{fa:'ریسک‌های اجرایی، تأخیر ساخت و تغییر درآمد وجود دارد. بازده و ارقام این صفحه صرفاً داده نمایشی هستند.'},symbol:'SUN',documents:[],sort_order:3,updated_at:'2026-09-07T00:00:00Z'},
{id:'00000000-0000-4000-8000-000000000004',slug:'creative-rights',category:'intangible',status:'published',title:{fa:'حقوق نشر استودیو آوا'},subtitle:{fa:'مالکیت فکری'},description:{fa:'نمونه‌ای از مشارکت در منافع حقوق نشر. حدود حق واگذارشده، دوره قرارداد و نحوه محاسبه سهم درآمد باید برای هر دارایی به‌صورت جداگانه مشخص شود.'},location:{fa:'حقوق نشر · دارایی نمونه'},image_url:'',current_return:16.8,unit_price_rial:2500000,duration_months:12,total_units:8000,sold_units:2800,risk:{fa:'درآمد حاصل از حقوق نشر متغیر است. داشتن توکن لزوماً به معنی مالکیت کامل اثر یا حق استفاده از آن نیست.'},symbol:'AVA',documents:[],sort_order:4,updated_at:'2026-09-07T00:00:00Z'}];
export const defaultContent:SiteContent={hero:{eyebrow:{fa:'جهانی تازه برای دارایی‌های شما'},title:{fa:'ارزش واقعی.'},accent:{fa:'فرصت‌های بی‌مرز.'},description:{fa:'پل میان دارایی‌های ارزشمند و دنیای دیجیتال.\nآینده سرمایه‌گذاری را با پلانک تجربه کنید.'},caption:{fa:'یک دارایی. هزاران فرصت.'},background_type:'animation',media_url:'',poster_url:'',show_orbit:true},faq:[
{id:'token',question:{fa:'توکنایزیشن دارایی چیست؟'},answer:{fa:'توکنایزیشن، نمایش دیجیتال حقوق مشخص نسبت به یک دارایی است. نوع مالکیت، حق درآمد یا سایر حقوق هر توکن باید در قرارداد و مدارک همان پروژه مشخص شود.'}},
{id:'start',question:{fa:'چطور سرمایه‌گذاری را شروع کنم؟'},answer:{fa:'ابتدا یک پروژه را انتخاب کنید، اطلاعات و ریسک‌ها را بخوانید و مبلغ موردنظر را در صفحه پروژه وارد کنید. در نسخه عملیاتی، ادامه خرید پس از ورود، احراز شرایط و تأیید قیمت نهایی امکان‌پذیر است.'}},
{id:'return',question:{fa:'آیا بازده سرمایه‌گذاری تضمین شده است؟'},answer:{fa:'خیر. بازده نمایش‌داده‌شده به معنی تضمین سود نیست. ارزش دارایی و درآمد آن می‌تواند تغییر کند و امکان کاهش ارزش سرمایه وجود دارد.'}},
{id:'wallet',question:{fa:'توکن‌های من در کدام کیف پول نگهداری می‌شوند؟'},answer:{fa:'آدرس والت مربوط به حساب شما از سرویس آدرس‌های والت دریافت می‌شود. مارکت‌پلیس کلید خصوصی یا عبارت بازیابی شما را دریافت نمی‌کند. شبکه و شیوه تحویل توکن پیش از خرید مشخص خواهد شد.'}},
{id:'exit',question:{fa:'آیا می‌توانم هر زمان از سرمایه‌گذاری خارج شوم؟'},answer:{fa:'شرایط خروج و انتقال برای هر پروژه متفاوت است. دوره نگهداری، محدودیت انتقال و امکان معامله مجدد را پیش از خرید در مدارک همان پروژه بررسی کنید.'}}
],footer:{fa:'پلانک، پلی میان ارزش واقعی دارایی‌ها و فرصت‌های دنیای دیجیتال. برای انتخاب آگاهانه‌تر، از شناخت دارایی شروع کنید.'},nav:{market:{fa:'مارکت‌پلیس'},tokenize:{fa:'توکنایزیشن'},resources:{fa:'منابع و آموزش'},about:{fa:'درباره پلانک'}},app_url:'',tokenization_url:'',logo_url:'',enabled_locales:['fa']};
