export function isCNPJ(cnpj: string | null | undefined): boolean {
  if (!(typeof cnpj === 'string' && cnpj)) return false

  cnpj = cnpj.replace(/[\\.\\/-]/g, '')
  if (cnpj.length !== 14 || /^(\d)\1{13}$/.test(cnpj)) return false

  let length = cnpj.length - 2,
    numbers = cnpj.substring(0, length),
    digits = cnpj.substring(length),
    sum = 0,
    pos = length - 7

  for (let i = length; i >= 1; i--) {
    // @ts-ignore
    sum += numbers[length - i] * pos--
    if (pos < 2) pos = 9
  }

  console.log('Soma:', sum, 'Resto:', sum % 11) // <-- ADICIONE ESTA LINHA

  let result = sum % 11 < 2 ? 0 : 11 - (sum % 11)

  if (result !== parseInt(digits[0])) return false

  length++
  numbers = cnpj.substring(0, length)
  sum = 0
  pos = length - 7
  for (let i = length; i >= 1; i--) {
    // @ts-ignore
    sum += numbers[length - i] * pos--
    if (pos < 2) pos = 9
  }

  result = sum % 11 < 2 ? 0 : 11 - (sum % 11)
  console.log('Resultado esperado do segundo dígito:', result) // <-- ADICIONE ESTA LINHA

  return result === parseInt(digits[1])
}
