import type {Locale} from './catalog';
export type VerificationMetadata={verification_mode?:'standard'|'temporary';temporary_level?:'primary'|'full'|null;temporary_expires_at?:string|null};
type IdentityDisplayInput=VerificationMetadata&{status:string;level?:string|null};
const words={
 fa:{scope:'احراز هویت',pending:'در انتظار بررسی',draft:'تکمیل نشده',verified:'تأییدشده',rejected:'نیاز به اصلاح مدارک',documents:'مدارک تأییدشده · در انتظار تأیید نهایی',temporary:'احراز موقت',expired:'احراز موقت: پایان اعتبار',invalid:'احراز موقت: نیاز به بررسی اعتبار',level:'سطح',basic:'پایه',primary:'اولیه',full:'کامل هویتی و بانکی',unknown:'در انتظار به‌روزرسانی',until:'معتبر تا',temporaryNote:'این تأیید موقت با مسئولیت مدیریت ثبت شده است؛ به معنی تکمیل استعلام‌ها یا تأیید دائمی نیست.',expiredNote:'اعتبار تأیید موقت پایان یافته است. سطح جاری پس از دریافت آخرین وضعیت از سامانه نمایش داده می‌شود.',invalidNote:'زمان اعتبار تأیید موقت در دسترس نیست. برای پیگیری با پشتیبانی تماس بگیرید.'},
 en:{scope:'Identity verification',pending:'Pending review',draft:'Incomplete',verified:'Verified',rejected:'Documents need correction',documents:'Documents approved · awaiting final approval',temporary:'Temporary verification',expired:'Temporary verification expired',invalid:'Temporary verification validity needs review',level:'Level',basic:'Basic',primary:'Primary',full:'Full identity and banking',unknown:'Awaiting update',until:'Valid until',temporaryNote:'This temporary approval was recorded under administrator responsibility. It does not mean all checks are complete or permanent verification is granted.',expiredNote:'Temporary approval has expired. Your current level will appear after the latest status is received.',invalidNote:'The temporary approval expiry is unavailable. Please contact support.'},
 ar:{scope:'التحقق من الهوية',pending:'بانتظار المراجعة',draft:'غير مكتمل',verified:'مؤكد',rejected:'تحتاج المستندات إلى تصحيح',documents:'المستندات معتمدة · بانتظار الموافقة النهائية',temporary:'تحقق مؤقت',expired:'انتهت صلاحية التحقق المؤقت',invalid:'صلاحية التحقق المؤقت تحتاج إلى مراجعة',level:'المستوى',basic:'أساسي',primary:'أولي',full:'الهوية والحساب البنكي بالكامل',unknown:'بانتظار التحديث',until:'صالح حتى',temporaryNote:'سُجلت هذه الموافقة المؤقتة على مسؤولية الإدارة، ولا تعني اكتمال الاستعلامات أو منح تحقق دائم.',expiredNote:'انتهت صلاحية الموافقة المؤقتة. سيظهر مستواك الحالي بعد استلام آخر حالة.',invalidNote:'تاريخ انتهاء الموافقة المؤقتة غير متاح. يرجى التواصل مع الدعم.'},
};
export function verificationPresentation(input:IdentityDisplayInput,locale:Locale='fa',now=Date.now()){
 const t=words[locale]||words.fa;
 const level=input.level==='primary'||input.level==='full'?input.level:'basic';
 const temporary=input.verification_mode==='temporary';
 const expires=typeof input.temporary_expires_at==='string'?Date.parse(input.temporary_expires_at):NaN;
 const validExpiry=Number.isFinite(expires);
 const expired=temporary&&validExpiry&&expires<=now;
 const temporaryValid=temporary&&input.status==='verified'&&validExpiry&&expires>now&&(input.temporary_level==='primary'||input.temporary_level==='full')&&input.temporary_level===level;
 const permanent=input.status==='verified'&&!temporary&&(input.verification_mode===undefined||input.verification_mode==='standard')&&level!=='basic';
 const expiresText=validExpiry?`${t.until} ${new Intl.DateTimeFormat(locale,{dateStyle:'medium',timeStyle:'short'}).format(new Date(expires))}`:'';
 const status=input.status==='verified'?t.verified:input.status==='rejected'?t.rejected:input.status==='documents_approved'?t.documents:input.status==='pending'?t.pending:t.draft;
 return {
  label:temporaryValid?`${t.temporary} · ${t.level} ${t[level]}`:temporary?(expired?t.expired:t.invalid):`${t.scope}: ${status}`,
  detail:temporaryValid?t.temporaryNote:temporary?(expired?t.expiredNote:t.invalidNote):'',
  levelLabel:temporary&&!temporaryValid?t.unknown:t[level],
  tone:temporary?'temporary':permanent?'verified':input.status==='rejected'?'rejected':'pending',
  verified:permanent||temporaryValid,permanent,temporary,temporaryValid,expired,
  expiresAt:validExpiry?input.temporary_expires_at:null,expiresText:temporary?expiresText:'',
 };
}
export function identityRefreshKey(input:VerificationMetadata&{verification_status:string;account_level:string}){
 return JSON.stringify([input.verification_status,input.account_level,input.verification_mode||'standard',input.temporary_level||null,input.temporary_expires_at||null]);
}
