import { ICONES_ACAO, ICONES_ARQUIVO, ICONES_COMANDO, ICONES_DIAGNOSTICO, ICONES_FEEDBACK, ICONES_RELATORIO, ICONES_STATUS, ICONES_TIPOS } from '../../shared/icons.js';
export const CATEGORIAS_TIPOS = {
    LEGITIMO: {
        icone: ICONES_TIPOS.legitimo,
        nome: '正当',
        descricao: 'unknownの正しい使用 - アクション不要',
        confidenciaMin: 100
    },
    MELHORAVEL: {
        icone: ICONES_TIPOS.melhoravel,
        nome: '改善可能',
        descricao: 'より具体的になる可能性があります - 手動レビュー推奨',
        confidenciaMin: 70
    },
    CORRIGIR: {
        icone: ICONES_TIPOS.corrigir,
        nome: '修正',
        descricao: '置き換えが必要 - 自動修正可能',
        confidenciaMin: 95
    }
};
const MENSAGENS_INICIO = {
    titulo: `${ICONES_COMANDO.fixTypes} 安全でない型の分析を開始中...`,
    analisando: (target) => `${ICONES_ARQUIVO.diretorio} 分析対象: ${target}`,
    confianciaMin: (min) => `${ICONES_DIAGNOSTICO.stats} 最低信頼度: ${min}%`,
    modo: (dryRun) => `${dryRun ? ICONES_ACAO.analise : ICONES_ACAO.correcao} モード: ${dryRun ? '分析(ドライラン)' : '修正を適用'}`
};
const MENSAGENS_PROGRESSO = {
    processandoArquivos: (count) => `${ICONES_ARQUIVO.diretorio} ${count}件のファイルを処理中...`,
    arquivoAtual: (arquivo, count) => `${ICONES_ARQUIVO.arquivo} ${arquivo}: ${count}件の発生箇所`
};
export const MENSAGENS_RESUMO = {
    encontrados: (count) => `${count}件の安全でない型が見つかりました:`,
    tituloCategorizacao: `${ICONES_DIAGNOSTICO.stats} 分類分析:`,
    confianciaMedia: (media) => `${ICONES_DIAGNOSTICO.stats} 平均信頼度: ${media}%`,
    porcentagem: (count, total) => {
        const pct = total > 0 ? Math.round(count / total * 100) : 0;
        return `${count}件(${pct}%)`;
    }
};
export const DICAS = {
    removerDryRun: '[ヒント] 修正を適用するには --dry-run フラグを削除してください',
    usarInterativo: '[ヒント] 各修正を確認するには --interactive を使用してください',
    ajustarConfianca: (atual) => `${ICONES_FEEDBACK.dica} --confidence <数値> を使用して閾値を調整してください(現在: ${atual}%)`,
    revisar: (categoria) => `${ICONES_FEEDBACK.dica} ${categoria} のケースを手動で確認してください`
};
export const ACOES_SUGERIDAS = {
    LEGITIMO: ['これらのケースは正しく、現状のまま維持すべきです', '追加のアクションは不要です'],
    MELHORAVEL: ['可能であれば、より具体的な型への置き換えを検討してください', '将来のリファクタリング時に確認してください', 'unknownの使用理由を説明するコメントを追加してください'],
    CORRIGIR: ['これらのケースの修正を優先してください', '特定のTypeScript型に置き換えてください', '必要に応じて型ガードを使用してください']
};
const MENSAGENS_ERRO = {
    correcaoNaoImplementada: '完全な自動修正はまだ実装されていません',
    sistemaDesenvolvimento: `${ICONES_FEEDBACK.foguete} 高度な自動修正システムは開発中です`,
    requisitoAnalise: '安全な修正にはAST分析と型推論が必要です',
    detectorNaoEncontrado: '安全でない型の検出器がアナリストレジストリに見つかりません',
    modulosNaoEncontrados: '修正モジュールが見つかりません'
};
export const MENSAGENS_SUCESSO = {
    nenhumTipoInseguro: `${ICONES_STATUS.ok} 安全でない型は検出されませんでした!コードは適切な型の安全性を備えています。`,
    nenhumAltaConfianca: `${ICONES_STATUS.ok} 高信頼度の修正は見つかりませんでした`,
    nenhumaCorrecao: '修正は適用されませんでした(--confidence で閾値を調整してください)'
};
export const MENSAGENS_CLI_CORRECAO_TIPOS = {
    linhaEmBranco: '',
    erroExecutar: (mensagem) => `fix-types の実行エラー: ${mensagem}`,
    linhaResumoTipo: (texto) => `  ${texto}`,
    exemplosDryRunTitulo: `${ICONES_RELATORIO.lista} 見つかった例(ドライラン):`,
    exemploLinha: (icone, relPath, linha) => `  ${icone} ${relPath}:${linha}`,
    exemploMensagem: (mensagem) => `     └─ ${mensagem}`,
    debugVariavel: (nome) => `     └─ 変数: ${nome}`,
    maisOcorrencias: (qtd) => `  ... その他 ${qtd}件の発生箇所`,
    aplicandoCorrecoesAuto: `${ICONES_ACAO.correcao} 自動修正を適用中...`,
    exportandoRelatorios: `${ICONES_ACAO.export} レポートをエクスポート中...`,
    verboseAnyDetectado: (arquivo, linha) => `  ${ICONES_TIPOS.any} ${arquivo}:${linha} - any が検出されました(修正推奨)`,
    verboseAsAnyCritico: (arquivo, linha) => `  ${ICONES_TIPOS.corrigir} ${arquivo}:${linha} - "as any" が検出されました(重要 - 修正必須)`,
    verboseAngleAnyCritico: (arquivo, linha) => `  ${ICONES_TIPOS.corrigir} ${arquivo}:${linha} - "<any>" が検出されました(重要 - 非推奨構文)`,
    verboseUnknownCategoria: (icone, arquivo, linha, categoria, confianca) => `  ${icone} ${arquivo}:${linha} - ${categoria}(${confianca}%)`,
    verboseMotivo: (motivo) => `     └─ ${motivo}`,
    verboseSugestao: (sugestao) => `     └─ ${ICONES_FEEDBACK.dica} ${sugestao}`,
    verboseVariantesTitulo: `     └─ ${ICONES_DIAGNOSTICO.stats} 代替の可能性:`,
    verboseVarianteItem: (idxBase1, variante) => `        ${idxBase1}. ${variante}`,
    analiseDetalhadaSalva: `${ICONES_ARQUIVO.arquivo} 詳細分析を保存しました: .tutanus/fix-types-analise.json`,
    altaConfiancaTitulo: (qtd) => `${ICONES_DIAGNOSTICO.stats} ${qtd}件の高信頼度修正(≥85%):`,
    altaConfiancaLinha: (relPath, linha, confianca) => `  ${ICONES_TIPOS.corrigir} ${relPath}:${linha}(${confianca}%)`,
    altaConfiancaDetalhe: (texto) => `     └─ ${texto}`,
    altaConfiancaMais: (qtd) => `  ... その他 ${qtd}件の修正`,
    incertosTitulo: (qtd) => `${ICONES_FEEDBACK.pergunta} ${qtd}件の分析が不確実なケース(信頼度70%未満):`,
    incertosIntro: '   これらのケースは注意深い手動レビューが必要です - 複数の可能性が検出されています',
    incertosLinha: (relPath, linha, confianca) => `  ${ICONES_TIPOS.melhoravel} ${relPath}:${linha}(${confianca}%)`,
    incertosMais: (qtd) => `  ... その他 ${qtd}件の不確実なケース(.tutanus/fix-types-analise.json を参照)`,
    correcoesResumoSucesso: (qtd) => `${ICONES_STATUS.ok} ${qtd}件のファイルが修正されました`,
    correcoesResumoLinhaOk: (arquivo, linhas) => `   ロギング  ${arquivo}: ${linhas}行が変更されました`,
    correcoesResumoLinhaErro: (arquivo, erro) => `   ${ICONES_STATUS.falha} ${arquivo}: ${erro}`,
    correcoesResumoFalhas: (qtd) => `${ICONES_STATUS.falha} ${qtd}件のファイルでエラーが発生しました`,
    dryRunAviso: (iconeInicio) => `${iconeInicio} ドライランモードが有効 - 変更は適用されません`,
    templatePasso: (passo) => `  ${passo}`
};
export const TEXTOS_CATEGORIZACAO_CORRECAO_TIPOS = {
    anyMotivo: 'anyは安全ではありません - 特定の型に置き換えてください',
    anySugestao: '変数の使用状況を分析して正しい型を推論してください',
    asAnyMotivo: '型アサーション "as any" は型の安全性を完全に無効にします',
    asAnySugestao: '重要: 特定の型に置き換えるか、ランタイムバリデーション付きのunknownを使用してください',
    angleAnyMotivo: '旧来の型キャスト <any> は型の安全性を無効にします',
    angleAnySugestao: '重要: 最新の "as" 構文に移行し、特定の型を使用してください',
    semContextoMotivo: 'コンテキストを分析できませんでした',
    semContextoSugestao: '手動で確認してください'
};
export const TEMPLATE_RESUMO_FINAL = {
    titulo: `${ICONES_RELATORIO.detalhado} 手動で修正を適用するには:`,
    passos: ['上記の分類されたケースを確認してください', `正当(${ICONES_TIPOS.legitimo}): 現状のまま維持`, `改善可能(${ICONES_TIPOS.melhoravel}): より具体的な型を検討`, `修正(${ICONES_TIPOS.corrigir}): 特定の型に置き換え`, '修正後に `npm run lint` を実行してください']
};
const ICONES = {
    inicio: ICONES_COMANDO.fixTypes,
    aplicando: '[>]',
    analise: '[>]',
    pasta: '[DIR]',
    arquivo: '[FILE]',
    alvo: '[>]',
    edicao: '[EDIT]',
    grafico: '[GRAPH]',
    lampada: '[TIP]',
    foguete: '[>>]',
    nota: '[NOTE]',
    checkbox: '[OK]',
    setinha: '└─',
    ...CATEGORIAS_TIPOS
};
export const ICONES_FIX_TYPES = ICONES;
export const MENSAGENS_ERRO_FIX_TYPES = MENSAGENS_ERRO;
export const MENSAGENS_INICIO_FIX_TYPES = MENSAGENS_INICIO;
export const MENSAGENS_PROGRESSO_FIX_TYPES = MENSAGENS_PROGRESSO;
export const MENSAGENS_SUCESSO_FIX_TYPES = MENSAGENS_SUCESSO;
export function formatarTipoInseguro(tipo, count) {
    const icone = tipo.includes('any') ? ICONES_TIPOS.any : ICONES_TIPOS.unknown;
    const plural = count !== 1 ? 's' : '';
    return `${icone} ${tipo}: ${count}件の発生${plural}`;
}
export function formatarOcorrencia(relPath, linha) {
    return `  ${ICONES.setinha} ${relPath}:${linha || '?'}`;
}
export function formatarComContexto(mensagem, indentLevel = 1) {
    const indent = '  '.repeat(indentLevel);
    return `${indent}${ICONES.setinha} ${mensagem}`;
}
export function formatarSugestao(sugestao) {
    return `     ${ICONES.setinha} ${ICONES.lampada} ${sugestao}`;
}
export function gerarResumoCategoria(categoria, count, total) {
    const config = CATEGORIAS_TIPOS[categoria];
    const porcentagem = MENSAGENS_RESUMO.porcentagem(count, total);
    return [categoria === 'CORRIGIR' ? `${config.icone} ${config.nome}: ${porcentagem}` : categoria === 'MELHORAVEL' ? `${config.icone} ${config.nome}: ${porcentagem}` : `${config.icone} ${config.nome}: ${porcentagem}`, `   ${ICONES.setinha} ${config.descricao}`];
}
export const DEPURACAO = {
    categorizacao: (arquivo, tipo, categoria) => `[DEBUG] ${arquivo} - ${tipo} → ${categoria}`,
    confianca: (tipo, valor) => `[DEBUG] ${tipo} の信頼度: ${valor}%`
};
//# sourceMappingURL=fix-types-messages.js.map