import {AuthError} from './customer-auth';
import {db} from './server';
export const tokenizationId=(v:unknown):v is string=>typeof v==='string'&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v);
export function tokenizationVersion(value:unknown){return Number.isSafeInteger(value)&&Number(value)>0}
export const tokenizationErrors:Record<string,string>={tokenization_conflict:'درخواست تغییر کرده است. تازه‌سازی کنید و دوباره تلاش کنید.',tokenization_invalid:'اطلاعات درخواست معتبر نیست.',tokenization_terms:'پذیرش شرایط جاری برای ادامه لازم است.',tokenization_fields:'فیلدهای الزامی دارایی را کامل و صحیح وارد کنید.',tokenization_documents:'تمام مدارک الزامی را بارگذاری کنید.',tokenization_reviews:'تأیید حقوقی، مالی، فنی و مدارک الزامی پیش از پیشنهاد لازم است.',tokenization_state:'این عملیات در وضعیت فعلی درخواست مجاز نیست.',tokenization_proposal:'پیشنهاد توکنومیکس معتبر نیست یا تغییر کرده است.',tokenization_limit:'تعداد درخواست‌ها یا مدارک به حد مجاز رسیده است.',tokenization_not_found:'درخواست یا مدرک یافت نشد.',not_authorized:'دسترسی به این عملیات مجاز نیست.',not_authenticated:'ابتدا وارد حساب شوید.'};
export async function tokenizationRpc(name:string,payload:unknown,token:string){
 const response=await db('rpc/'+name,{method:'POST',body:JSON.stringify(payload)},token),data=await response.json() as Record<string,unknown>;
 if(!response.ok){const missing=response.status===404||data.code==='PGRST202';throw new AuthError(missing?'سرویس ثبت دارایی هنوز در این محیط فعال نشده است.':tokenizationErrors[typeof data.message==='string'?data.message:'']||'عملیات ثبت دارایی انجام نشد. دوباره تلاش کنید.',missing?503:response.status===403?403:response.status>=500?503:409)}return data;
}
