/**
 * 🎯 Supplier Interface - DADOS REAIS DA API PraFrota
 * 🔗 Fonte: API Response Analysis com dados reais
 */
export enum SupplierType {
  INDIVIDUAL = 'Individual',
  BUSINESS = 'Business'
}

export enum SupplierGender {
  MALE = 'male',
  FEMALE = 'female',
  OTHER = 'other'
}

export enum SupplierSegment {
  OFFICINE = 'officine',
  FINANCE = 'finance',
  TRANSPORT = 'transport',
  TECH = 'tech',
  ALIMENTATION = 'alimentation',
  INSURANCE = 'insurance',
  LEGAL = 'legal',
  LOGISTICS = 'logistics',
  MARKETING = 'marketing',
  MEDICAL = 'medical',
  PUBLIC_SERVICE = 'publicservice',
  GAS_STATION = 'gasstation',
  OTHER = 'other'
}

export enum SupplierTag {
  BANK = 'bank',
  SDC = 'sdc',
  APP = 'app',
  IA = 'ia',
  OTHER = 'other'
}

export interface Supplier {
  id: number; // Identificador único do fornecedor
  personId: number; // ID da pessoa relacionada
  code?: string | null; // Código interno do fornecedor
  name: string; // Nome completo do fornecedor
  type: SupplierType; // Tipo: Individual ou Business
  gender: SupplierGender; // Gênero: male, female, other
  birth_date?: string | null; // Data de nascimento (YYYY-MM-DD)
  cnpj: string; // CNPJ da empresa
  cpf?: string | null; // CPF (para pessoa física)
  segment: SupplierSegment[]; // Array de segmentos de atuação
  tags: SupplierTag[]; // Array de tags/categorias
  email?: string | null; // Endereço de email
  phone?: string | null; // Número de telefone
  pix_key?: string | null; // Chave PIX para pagamentos
  address_street: string; // Rua do endereço
  address_number: string; // Número do endereço
  address_complement?: string | null; // Complemento do endereço
  address_neighborhood: string; // Bairro
  address_city: string; // Cidade
  address_uf: string; // Estado (UF)
  address_cep: string; // CEP
  registration_date: string; // Data de registro (ISO 8601)
  license_expires?: string | null; // Data de expiração da licença (ISO 8601)
  createdAt: string; // Data de criação (ISO 8601)
  updatedAt: string; // Data da última atualização (ISO 8601)
  is_active: boolean; // Status ativo/inativo
  is_blacklisted: boolean; // Status de lista negra
  blacklist_reason?: string | null; // Motivo da lista negra
  rating: number; // Avaliação/classificação (0-5)
  credit_limit: number; // Limite de crédito
  payment_terms?: string | null; // Condições de pagamento
  contract_number?: string | null; // Número do contrato
  license_number?: string | null; // Número da licença
  father_name?: string | null; // Nome do pai
  mother_name?: string | null; // Nome da mãe
  notes?: string | null; // Observações adicionais
  photoIds: number[]; // Array de IDs das fotos (number[])
}