import { exportarComplianceJson, exportarComplianceMarkdown, gerarRelatorioJson, gerarRelatorioMarkdown } from '../../cli/diagnostic/exporters/index.js';
import { gerarRelatorioCompliance } from '../../reports/compliance/index.js';
import { registrarFormatter } from './registry.js';
const formatterJson = {
    nome: 'json-builtin',
    descricao: 'Exportador JSON nativo',
    formato: 'json',
    versao: '1.0.0',
    extensoes: ['.json'],
    gerar: (dados) => {
        return gerarRelatorioJson({
            metadata: dados.metadata,
            stats: dados.stats,
            ocorrencias: dados.ocorrencias.map(o => ({
                arquivo: o.relPath || '',
                linha: o.linha,
                coluna: o.coluna,
                nivel: (o.nivel || 'info'),
                tipo: o.tipo || '',
                mensagem: o.mensagem || '',
            })),
            linguagens: dados.linguagens,
            sugestoes: dados.sugestoes,
        }, { compact: false, includeDetails: true, includeContext: true, escapeAscii: false });
    },
};
const formatterMarkdown = {
    nome: 'markdown-builtin',
    descricao: 'Exportador Markdown nativo',
    formato: 'markdown',
    versao: '1.0.0',
    extensoes: ['.md', '.markdown'],
    gerar: (dados) => {
        return gerarRelatorioMarkdown({
            metadata: dados.metadata,
            stats: dados.stats,
            ocorrencias: dados.ocorrencias,
            linguagens: dados.linguagens,
            sugestoes: dados.sugestoes,
        }, {
            includeToc: true,
            includeStats: true,
            includeGuardian: false,
            includeArquetipos: false,
            includeAutoFix: false,
            includeOcorrencias: true,
            agruparPorArquivo: false,
        });
    },
};
const formatterComplianceJson = {
    nome: 'compliance-json',
    descricao: 'Relatório de compliance em JSON (ISO 27001, SOC 2)',
    formato: 'json',
    versao: '1.0.0',
    extensoes: ['.compliance.json'],
    gerar: (dados) => {
        const relatorio = gerarRelatorioCompliance('iso-27001', dados.ocorrencias, { nomeProjeto: dados.metadata.projectNome || 'projeto', duracao: dados.metadata.timestamp ? 0 : 0, totalArquivos: dados.stats.arquivosAnalisados });
        return relatorio ? exportarComplianceJson(relatorio) : '{}';
    },
};
const formatterComplianceMarkdown = {
    nome: 'compliance-markdown',
    descricao: 'Relatório de compliance em Markdown (ISO 27001, SOC 2)',
    formato: 'markdown',
    versao: '1.0.0',
    extensoes: ['.compliance.md'],
    gerar: (dados) => {
        const relatorio = gerarRelatorioCompliance('iso-27001', dados.ocorrencias, { nomeProjeto: dados.metadata.projectNome || 'projeto', duracao: 0, totalArquivos: dados.stats.arquivosAnalisados });
        return relatorio ? exportarComplianceMarkdown(relatorio) : '# Sem dados';
    },
};
export function inicializarFormattersBuiltin() {
    try {
        registrarFormatter(formatterJson);
    }
    catch { }
    try {
        registrarFormatter(formatterMarkdown);
    }
    catch { }
    try {
        registrarFormatter(formatterComplianceJson);
    }
    catch { }
    try {
        registrarFormatter(formatterComplianceMarkdown);
    }
    catch { }
}
//# sourceMappingURL=registro-builtin.js.map