export interface User {
  id: number | string;
  nome: string;
  email: string;
  perfil: string;
  perfil_id: number;
}

export interface AuthResponse {
  access_token: string;
  user: User;
}

export interface DashboardIndicadores {
  demandas_abertas: number;
  em_cotacao: number;
  pendentes: number;
  em_aprovacao: number;
  os_ativas: number;
  alertas: number;
}

export interface Demanda {
  id: string;
  numero: number;
  titulo: string;
  descricao: string;
  local_id: string;
  centro_custo_id: string;
  categoria_id: string;
  subcategoria_id: string;
  criticidade: string;
  data_desejada: string;
  status: string;
  solicitante_id: string | number;
  gestor_id: string;
  valor_estimado: number | null;
  documentos: any[];
  itens_linha: any[];
  created_at: string;
  updated_at: string;
  // legacy compat
  solicitante_nome?: string;
  prioridade?: string;
  data_criacao?: string;
  impacto_ambiental_demanda?: string;
  justificativa_manutencao_emergencial?: string;
  // computed
  _documentos_count?: number;
}

export interface Subcategoria {
  id: string;
  nome: string;
  categoria_id: string;
  ativo?: boolean;
}

export interface DocumentoFile {
  id: string;
  demanda_id: string;
  nome_arquivo: string;
  tipo: string;
  caminho: string;
  tamanho: number;
  created_at: string;
}

export interface OrdemServico {
  id: string;
  numero: number | string;
  demanda_id: string;
  proposta_id: string;
  fornecedor_id: string;
  valor: number;
  status: string;
  data: string;
  data_inicio: string;
  data_conclusao: string;
  valor_bruto: number;
  valor_liquido: number;
  iss: number;
  inss: number;
  pcc: number;
  condicao_pagamento: string;
  prazo_execucao: string;
  data_estimada_entrega: string;
  observacoes: string;
  created_at: string;
  updated_at: string;
  // legacy compat
  fornecedor_nome?: string;
  descricao?: string;
  data_criacao?: string;
}

export interface DocumentoVersao {
  id: string;
  ordem_servico_id: string;
  fornecedor_id: string;
  nome_arquivo: string;
  caminho: string;
  tamanho: number;
  versao: number;
  valor_bruto: number;
  valor_liquido: number;
  iss: number;
  inss: number;
  pcc: number;
  condicao_pagamento: string;
  prazo_execucao: string;
  data_estimada_entrega: string;
  created_at: string;
}

export interface Fornecedor {
  id: string;
  tipo_pessoa: string;
  cpf_cnpj: string;
  razao_social: string;
  nome_fantasia: string;
  email: string;
  telefone: string;
  endereco: string;
  categorias_atendidas: string[];
  rating: number;
  usuario_id: string;
  nome_contato: string;
  possui_politica_ambiental: boolean;
  possui_politica_sst: boolean;
  declara_uso_epi: boolean;
  equipe_treinada: boolean;
  classificacao_esg: string;
  ativo: boolean;
  certidoes: any[];
  created_at: string;
  updated_at: string;
  // legacy compat
  cnpj?: string;
  especialidades?: string[];
  avaliacao?: number;
}

export interface Orcamento {
  id: string;
  ano: number;
  mes: number;
  centro_custo_id: string;
  categoria_id: string;
  valor_planejado: number;
  valor_comprometido: number;
  valor_realizado: number;
  tipo_periodo: string;
  valor_anual: number;
  created_at: string;
  updated_at: string;
  // legacy compat
  categoria?: string;
  valor_previsto?: number;
  status?: string;
}

export interface Categoria {
  id: string;
  nome: string;
  subcategoria?: string;
  criticidade_padrao?: string;
  sla_dias?: number;
  categoria_pai_id?: string;
  tipo_investimento?: string;
  tipo_manutencao?: string;
  impacto_ambiental_esperado?: string;
  potencial_geracao_residuos?: string;
  ativo?: boolean;
}

export interface CentroCusto {
  id: string;
  codigo: string;
  nome: string;
  responsavel_id?: string;
  ativo?: boolean;
}

export interface Local {
  id: string;
  nome: string;
  endereco?: string;
  centro_custo_id?: string;
  responsavel_id?: string;
  tipo_operacao_local?: string;
  classificacao_impacto_ambiental?: string;
  praticas_sustentaveis?: string[];
  ativo?: boolean;
}

export interface Contrato {
  id: number;
  numero: string;
  fornecedor_id: number;
  fornecedor_nome?: string;
  objeto: string;
  valor_mensal: number;
  data_inicio: string;
  data_fim: string;
  status: string;
}
