export type TldPrice = {
  tld: string;
  priceFa: string;
  priceEn: string;
};

export const MOCK_TLDS: TldPrice[] = [
  { tld: '.com', priceFa: '۷۹۹,۰۰۰', priceEn: '799,000' },
  { tld: '.ir', priceFa: '۱۹,۹۰۰', priceEn: '19,900' },
  { tld: '.net', priceFa: '۹۹۹,۰۰۰', priceEn: '999,000' },
  { tld: '.org', priceFa: '۸۹۹,۰۰۰', priceEn: '899,000' },
  { tld: '.co', priceFa: '۱,۹۹۹,۰۰۰', priceEn: '1,999,000' },
  { tld: '.shop', priceFa: '۱,۴۹۹,۰۰۰', priceEn: '1,499,000' },
  { tld: '.io', priceFa: '۳,۴۹۹,۰۰۰', priceEn: '3,499,000' },
  { tld: '.me', priceFa: '۱,۲۹۹,۰۰۰', priceEn: '1,299,000' },
  { tld: '.app', priceFa: '۲,۱۹۹,۰۰۰', priceEn: '2,199,000' },
  { tld: '.dev', priceFa: '۱,۶۹۹,۰۰۰', priceEn: '1,699,000' },
  { tld: '.ai', priceFa: '۶,۹۹۹,۰۰۰', priceEn: '6,999,000' },
  { tld: '.info', priceFa: '۶۹۹,۰۰۰', priceEn: '699,000' },
  { tld: '.xyz', priceFa: '۳۹۹,۰۰۰', priceEn: '399,000' },
];

function hashString(value: string) {
  let hash = 0;
  for (let i = 0; i < value.length; i++) {
    hash = (hash * 31 + value.charCodeAt(i)) >>> 0;
  }
  return hash;
}

export function normalizeSld(input: string) {
  const cleaned = input
    .trim()
    .replace(/^https?:\/\//i, '')
    .replace(/^www\./i, '')
    .replace(/\s+/g, '');

  const firstLabel = cleaned.split('/')[0]?.split('?')[0]?.split('#')[0] ?? '';
  const base = firstLabel.split('.')[0] ?? '';
  return base.toLowerCase();
}

export function formatPrice(isFa: boolean, tld: TldPrice) {
  return isFa ? tld.priceFa : tld.priceEn;
}

export function isAvailableFor(base: string, tld: string) {
  if (!base) return true;
  const h = hashString(`${base}${tld}`);
  return h % 3 !== 0;
}

