
export interface IdentificationData {
  product: string;
  standards: string;
  manufacturer: string;
  certificateNumber: string;
  certificateDate: string;
  batches: string;
  heats: string;
  quantity: string;
}

export interface ComplianceItem {
  property?: string;
  element?: string;
  test?: string;
  norm: string;
  certificate: string;
  status: 'OK' | 'FALHA';
  differencePercentage?: string;
}

export interface ComplianceData {
  status: 'CONFORME' | 'NÃO CONFORME';
  nonComplianceReason?: string;
  mechanical: ComplianceItem[];
  chemical: ComplianceItem[];
  otherTests: ComplianceItem[];
}

export interface OverPerformanceItem {
  property: string;
  value: string;
}

export interface EquivalentItem {
  system: string;
  norm: string;
}

export interface ReportData {
  confidence: number;
  analysisSource?: string;
  identification: IdentificationData;
  compliance: ComplianceData;
  overPerformance: OverPerformanceItem[];
  equivalents: EquivalentItem[];
}

// --- NEW STANDARD DEFINITIONS ---
export interface ToleranciaTabela {
  limite_corrida_ate?: number;
  espessura_ate_mm?: number;
  espessura_maior_que_mm?: number;
  tolerancia_mais?: number;
  tolerancia_menos?: number;
}

export interface RegraTolerancia {
  regra?: string;
  tabela?: ToleranciaTabela[];
  tolerancia_mais?: number;
  tolerancia_menos?: number;
}

export interface ToleranciasAnaliseProduto {
  [elemento: string]: RegraTolerancia;
}

export interface LimitesQuimicos {
  espessura_max_mm?: number;
  grupos_astm_a6?: number[];
  nota_exemplo?: string;
  [elemento: string]: number | string | number[] | undefined;
}

export interface Standard {
  id_norma: string;
  codigo: string;
  grau?: string;
  produto_especifico?: string;
  limites_quimicos_corrida?: {
    [grupo_produto: string]: LimitesQuimicos[];
  };
  tolerancias_analise_produto_astma6?: ToleranciasAnaliseProduto;
  parametros_controle?: {
    mecanicos?: Record<string, number | null>;
    quimicos?: Record<string, number | null>;
    fisicos?: Record<string, number | null>;
  };
}
