/**
 * @fileoverview Implementação das funcionalidades principais do git-limpa-branches
 */
import { ExecutarGitFn, TemAlteracoesNaoMescladasFn, ObterBranchesRemotosFn, ObterBranchesLocaisFn, FazerPerguntaFn, ConfirmarEExecutarFn, ResultadoAnalise, AnalisarBranchesGitFn, ExcluirBranchesFn, Cores, IGitLimpaBranchesService } from './git-limpa-branches.types.js';
/**
 * Classe que implementa os serviços de limpeza de branches do Git
 */
export declare class GitLimpaBranchesService implements IGitLimpaBranchesService {
    private readonly branchesProtegidos;
    /**
     * Cores para formatação do console
     */
    private readonly cores;
    /**
     * Cria uma nova instância do serviço
     * @param branchesProtegidos - Lista de branches que não devem ser excluídos
     */
    constructor(branchesProtegidos: string[]);
    /**
     * Executa um comando git e retorna sua saída
     * @param comando - O comando git a ser executado
     * @param silencioso - Se true, não lança erro em caso de falha
     * @returns A saída do comando
     * @throws Error Se o comando falhar e silencioso for false
     */
    executarGit: ExecutarGitFn;
    /**
     * Verifica se um branch tem alterações não mescladas em relação aos branches protegidos
     * @param branch - O nome do branch a verificar
     * @returns True se o branch tem alterações não mescladas
     */
    temAlteracoesNaoMescladas: TemAlteracoesNaoMescladasFn;
    /**
     * Obtém todos os branches remotos
     * @returns Lista de branches remotos
     */
    obterBranchesRemotos: ObterBranchesRemotosFn;
    /**
     * Obtém todos os branches locais
     * @returns Lista de branches locais
     */
    obterBranchesLocais: ObterBranchesLocaisFn;
    /**
     * Faz uma pergunta ao usuário e retorna a resposta
     * @param pergunta - A pergunta a ser feita
     * @returns A resposta do usuário
     */
    fazerPergunta: FazerPerguntaFn;
    /**
     * Solicita confirmação do usuário para executar um comando
     * @param mensagem - A mensagem explicando o que será feito
     * @param comando - O comando a ser executado
     * @returns True se o usuário confirmou, false caso contrário
     */
    confirmarEExecutar: ConfirmarEExecutarFn;
    /**
     * Analisa cada branch e determina quais podem ser excluídos
     * @returns Resultado da análise
     */
    analisarBranchesGit: AnalisarBranchesGitFn;
    /**
     * Exibe um resumo dos branches que podem ser excluídos e os que têm alterações
     * @param resultado - O resultado da análise de branches
     */
    exibirResumo(resultado: ResultadoAnalise): void;
    /**
     * Realiza a exclusão dos branches identificados como seguros para excluir
     * @param resultado - O resultado da análise de branches
     * @returns True se a exclusão foi bem-sucedida para todos os branches
     */
    excluirBranches: ExcluirBranchesFn;
    /**
     * Função principal que coordena a execução do utilitário
     */
    main(): Promise<void>;
    /**
     * Retorna as cores usadas pelo serviço para formatação do console
     */
    getCores(): Cores;
}
