export type TipoFragilidade = string;
export interface Fragilidade {
    tipo: TipoFragilidade;
    linha: number;
    coluna: number;
    descricao?: string;
    sugestao?: string;
    severidade?: 'baixa' | 'media' | 'alta' | 'critica';
    contexto?: string;
    nome?: string;
}
export interface ConstrucaoSintatica {
    tipo: string;
    linha: number;
    coluna: number;
    codigo?: string;
    nome?: string;
    contexto?: string;
}
export interface EstatisticasArquivo {
    imports: number | ImportInfo[];
    exports: number | ExportInfo[];
    sloc?: number;
    funcoes?: number;
    classes?: number;
    caminho?: string;
    aliases?: Record<string, number>;
    dependenciasInternas?: string[];
    dependenciasExternas?: string[];
    complexidade?: number;
}
export interface ImportInfo {
    origem?: string;
    tipo?: 'external' | 'alias' | 'relative';
    items?: string[];
    isType?: boolean;
}
export interface ExportInfo {
    nome?: string;
    tipo?: 'named' | 'default' | 'reexport';
}
export interface AnaliseArquitetural {
    imports: ImportInfo[] | string[];
    exports: ExportInfo[] | string[];
    stats: EstatisticasArquivo;
    padraoIdentificado?: string;
    confianca?: number;
    caracteristicas?: string[];
    violacoes?: string[];
    recomendacoes?: string[];
    metricas?: Record<string, number> | {
        modularidade?: number;
        acoplamento?: number;
        coesao?: number;
        complexidadeMedia?: number;
    };
}
export interface BlocoFuncao {
    nome?: string;
    inicio?: number;
    fim?: number;
    conteudo?: string;
    codigo?: string;
    hash?: string;
    caminho?: string;
    parametros?: string[];
    tipoFuncao?: string;
}
export interface DuplicacaoEncontrada {
    arquivo1?: string;
    arquivo2?: string;
    bloco1?: BlocoFuncao;
    bloco2?: BlocoFuncao;
    funcaoA?: BlocoFuncao;
    funcaoB?: BlocoFuncao;
    similaridade: number;
    tipoSimilaridade?: string;
}
export interface ProblemaDocumentacao {
    tipo: string;
    linha: number;
    coluna: number;
    contexto?: string;
    prioridade?: 'baixa' | 'media' | 'alta';
    descricao?: string;
    sugestao?: string;
}
export interface ProblemaPerformance {
    tipo: string;
    linha: number;
    coluna: number;
    descricao?: string;
    impacto?: 'baixo' | 'medio' | 'alto';
    sugestao?: string;
}
export interface ProblemaFormatacao {
    tipo: string;
    linha?: number;
    coluna?: number;
    mensagem?: string;
}
export type ProblemaQualidade = Fragilidade | ProblemaPerformance | ProblemaDocumentacao | ProblemaFormatacao;
export interface InterfaceInlineDetection {
    tipo: 'interface' | 'type-alias' | 'object-literal-type';
    nome?: string;
    linha: number;
    complexidade: number;
    contexto: string;
    sugestao: string;
}
export interface ProblemaWorkflow {
    tipo: string | 'action-desatualizada' | 'permissoes-excessivas' | 'secret-hardcoded' | 'falta-timeout' | 'run-inseguro' | 'checkout-inseguro' | 'branch-instavel' | 'falta-cache' | 'estrutura-workflow';
    descricao: string;
    severidade: 'baixa' | 'media' | 'alta' | 'critica';
    linha?: number;
    sugestao?: string;
}
export interface ResultadoAnalise {
    problemas: ProblemaWorkflow[];
    score: number;
    resumo: string;
}
export interface ProblemaSeguranca {
    tipo: 'eval-usage' | 'dangerous-html' | 'weak-crypto' | 'unsafe-regex' | 'prototype-pollution' | 'path-traversal' | 'hardcoded-secrets' | 'unhandled-async' | 'unhandled-async-event' | 'sql-injection' | 'command-injection' | 'insecure-cookie' | 'no-csrf-token' | 'xss-vulnerability' | 'dangerously-set-inner-html' | 'sensitive-env-exposure' | 'unsafe-regex-literal';
    descricao: string;
    severidade: 'baixa' | 'media' | 'alta' | 'critica';
    linha: number;
    sugestao: string;
}
export interface ResultadoContexto {
    tecnologia?: string;
    confiancaTotal: number;
    evidencias?: Array<{
        tipo: string;
        valor: string;
    }>;
    sugestoesMelhoria?: string[];
}
export interface InlineTypeOccurrence {
    tipo: string;
    estrutura: string;
    linha: number;
    contexto: string;
}
export interface DuplicateEntry {
    linha: number;
    tipo: string;
    contexto: string;
}
export interface ResultadoSegredo {
    campo: string;
    valor: string;
    linha: number;
    confianca: 'baixa' | 'media' | 'alta';
}
export interface TipoDuplicadoArgs {
    propriedades: string[];
    totalOcorrencias: number;
    contextoDesc: string;
    nomesSugeridos: string;
}
export interface MemoriaVisitorState {
    ocorrencias: import('../common/occurrences.js').OcorrenciaBase[];
    relPath: string;
    contextType: 'react' | 'vanilla';
    hasGlobalListeners: boolean;
}
export interface BugPattern {
    id: string;
    name: string;
    severity: 'erro' | 'aviso' | 'info';
    category: 'null-safety' | 'memory' | 'concurrency' | 'logic' | 'security' | 'performance' | 'type-safety';
    weight: number;
    detect: (content: string, relPath: string) => BugMatch | null;
}
export interface BugMatch {
    confidence: number;
    line?: number;
    message: string;
    suggestion?: string;
}
export interface FeatureVector {
    fileLength: number;
    avgLineLength: number;
    maxNestingDepth: number;
    functionCount: number;
    callbackCount: number;
    promiseCount: number;
    tryCatchCount: number;
    anyTypeCount: number;
    unsafeCastCount: number;
    todoCount: number;
    commentRatio: number;
    cyclomaticComplexity: number;
}
export {};
//# sourceMappingURL=detectors.d.ts.map