type MaskPhoneOptions = {
  maskShort?: boolean
  shortMask?: string
}

type MaskCodeOptions = {
  shortMask?: string
}

export function maskSecret(value: unknown): string {
  const normalized = String(value || '').trim()
  if (!normalized) {
    return ''
  }

  if (normalized.length <= 10) {
    return `${normalized.slice(0, 2)}****${normalized.slice(-2)}`
  }

  return `${normalized.slice(0, 6)}****${normalized.slice(-6)}`
}

export function maskPhone(value: unknown, options: MaskPhoneOptions = {}): string {
  const text = String(value || '').trim()
  if (!text) {
    return ''
  }

  if (text.length <= 7) {
    if (options.maskShort === false) {
      return text
    }

    return `${text.slice(0, 2)}${options.shortMask || '***'}${text.slice(-2)}`
  }

  return `${text.slice(0, 3)}****${text.slice(-4)}`
}

export function maskCode(value: unknown, options: MaskCodeOptions = {}): string {
  const text = String(value || '').trim()
  if (!text) {
    return ''
  }

  if (text.length <= 8) {
    return `${text.slice(0, 2)}${options.shortMask || '***'}${text.slice(-2)}`
  }

  return `${text.slice(0, 4)}****${text.slice(-4)}`
}
