// front-end/app/types/index.ts

export type StatusEdital =
  | 'em_analise'
  | 'elaborando_proposta'
  | 'edital_publicado'
  | 'fase_lances'
  | 'habilitacao'
  | 'recurso'
  | 'adjudicado'
  | 'contrato'
  | 'vencida'
  | 'perdida'
  | 'deserta'

export interface Edital {
  id: string
  numero: string
  orgao: string
  modalidade: 'pregao_eletronico' | 'pregao_presencial' | 'concorrencia' | 'dispensa' | 'inexigibilidade'
  objeto: string
  plataforma: string
  valorEstimado: number
  dataPublicacao: Date
  dataAbertura: Date
  status: StatusEdital
}

export interface Documento {
  id: string
  nome: string
  tipo: 'certidao' | 'contrato_social' | 'balanco' | 'atestado' | 'procuracao'
  dataVencimento: Date | null
  status: 'valida' | 'vencendo' | 'vencida' | 'sem_vencimento'
}

export interface Prazo {
  id: string
  titulo: string
  descricao: string
  dataLimite: Date
  urgencia: 'critico' | 'urgente' | 'normal'
  editalId: string
}

export interface DashboardStats {
  totalEditais: number
  taxaVitoria: number
  valorGanho: number
  alertasAtivos: number
  editalsPorEtapaPipeline: Record<number, number>
}

export interface Orgao {
  id: string
  nome: string
  esfera: 'federal' | 'estadual' | 'municipal'
  estado: string
  contatos: string[]
  totalParticipacoes: number
  totalVitorias: number
}

export interface Concorrente {
  id: string
  cnpj: string
  nome: string
  totalDisputas: number
  totalVitorias: number
  historicoDisputas: { editalId: string; venceu: boolean; valor: number }[]
}

export interface Contrato {
  id: string
  numero: string
  editalId: string
  orgao: string
  valor: number
  dataInicio: Date
  dataFim: Date
  fiscalContrato: string
  reajusteAnual: number
  prorrogacaoMaxima: number
  sla: string
}

export interface Usuario {
  id: string
  nome: string
  email: string
  perfil: 'comercial' | 'juridico' | 'tecnico' | 'diretoria' | 'administrador'
  status: 'ativo' | 'inativo'
}

export const STATUS_EDITAL_CONFIG: Record<StatusEdital, { label: string; bg: string; color: string }> = {
  em_analise:           { label: 'Mapeamento',           bg: '#eff6ff', color: '#0284c7' },
  elaborando_proposta:  { label: 'Termo de Referência',  bg: '#faf5ff', color: '#7c3aed' },
  edital_publicado:     { label: 'Edital Publicado',     bg: '#fff7ed', color: '#ea580c' },
  fase_lances:          { label: 'Fase de Lances',       bg: '#eff6ff', color: '#3b82f6' },
  habilitacao:          { label: 'Habilitação',          bg: '#fef3c7', color: '#d97706' },
  recurso:              { label: 'Recursos',             bg: '#fffbeb', color: '#d97706' },
  adjudicado:           { label: 'Adjudicado',           bg: '#ecfdf5', color: '#059669' },
  contrato:             { label: 'Contrato',             bg: '#f0fdf4', color: '#16a34a' },
  vencida:              { label: 'Vencida',              bg: '#f0fdf4', color: '#16a34a' },
  perdida:              { label: 'Perdida',              bg: '#fef2f2', color: '#dc2626' },
  deserta:              { label: 'Deserta / Fracassada', bg: '#f8fafc', color: '#64748b' },
}

export const PIPELINE_ETAPAS = [
  'Mapeamento',
  'Termo de Referência',
  'Edital Publicado',
  'Fase de Lances',
  'Habilitação',
  'Recursos',
  'Adjudicado',
  'Contrato',
] as const
