import { PrismaService } from '@hed-hog/api-prisma';
import { SettingService } from '../setting/setting.service';
export declare class TasksService {
    private readonly prismaService;
    private readonly settingService;
    private readonly logger;
    constructor(prismaService: PrismaService, settingService: SettingService);
    /**
     * Executa todas as tarefas de limpeza do banco de dados diariamente à meia-noite.
     *
     * As tarefas são executadas sequencialmente para evitar contenção excessiva no banco.
     * Cada tarefa possui logging detalhado para monitoramento e troubleshooting.
     */
    clear(): Promise<void>;
    /**
     * Limpa challenges de autenticação multifator (MFA) que já expiraram ou foram verificados.
     *
     * Remove registros da tabela user_mfa_challenge que:
     * - Expiraram (expires_at < now())
     * - Já foram verificados (verified_at IS NOT NULL)
     *
     * Por quê: Challenges expirados ou já utilizados não têm mais utilidade e ocupam
     * espaço desnecessário no banco de dados. A remoção periódica mantém a performance
     * das consultas e reduz o tamanho do banco.
     *
     * Limite: 20.000 registros por execução para evitar lock prolongado da tabela.
     */
    private clearExpiredMfaChallenges;
    /**
     * Limpa sessões de usuário expiradas e antigas.
     *
     * Remove registros da tabela user_session que:
     * - Expiraram (expires_at < now())
     * - Foram criadas há mais de 90 dias (created_at < now() - 90 days)
     *
     * Por quê: Sessões expiradas não podem mais ser utilizadas para autenticação.
     * O critério adicional de 90 dias garante retenção de dados para auditoria/análise
     * antes da exclusão definitiva. Isso permite investigar padrões de uso e
     * possíveis problemas de segurança dentro de uma janela razoável.
     *
     * Limite: 20.000 registros por execução para evitar lock prolongado da tabela.
     */
    private clearExpiredSessions;
    /**
     * Limpa challenges de verificação de identificadores de usuário (email, telefone, etc.)
     * que expiraram e não foram verificados, removendo também os identificadores órfãos.
     *
     * Remove em cascata:
     * 1. user_identifier_challenge: challenges expirados não verificados
     * 2. user_identifier: identificadores que nunca foram verificados e perderam seus challenges
     *
     * Por quê: Quando um usuário tenta adicionar um novo email/telefone, é gerado um challenge
     * para verificação. Se o usuário não verifica dentro do prazo, tanto o challenge quanto
     * o identificador não verificado devem ser removidos para evitar:
     * - Acúmulo de dados órfãos (identificadores que nunca serão usados)
     * - Bloqueio indevido de emails/telefones (um email não verificado não deve impedir
     *   outro usuário de cadastrá-lo)
     * - Confusão na interface (mostrar identificadores pendentes indefinidamente)
     *
     * Limite: 20.000 registros por execução para evitar lock prolongado das tabelas.
     */
    private clearExpiredUserIdentifierChallenges;
    /**
     * Limpa configurações de autenticação multifator (MFA) não verificadas cujos
     * challenges de verificação expiraram, removendo também os challenges associados.
     *
     * Remove em cascata:
     * 1. user_mfa_challenge: todos os challenges associados ao MFA não verificado
     * 2. user_mfa: configuração de MFA que nunca foi verificada e não possui challenges válidos
     *
     * Por quê: Quando um usuário configura MFA (TOTP, SMS, etc.), é gerado um challenge
     * para verificar que o método funciona. Se o usuário:
     * - Abandonou o processo de configuração (não verificou)
     * - Todos os challenges expiraram (não há tentativas válidas pendentes)
     *
     * Então a configuração incompleta deve ser removida porque:
     * - Não pode ser utilizada para autenticação (nunca foi verificada)
     * - Ocupa espaço desnecessário no banco
     * - Pode causar confusão na interface (métodos MFA "pendentes" indefinidamente)
     * - Permite ao usuário reconfigurar o método sem conflitos
     *
     * Limite: 20.000 registros por execução para evitar lock prolongado das tabelas.
     */
    private clearUnverifiedMfaWithExpiredChallenges;
    /**
     * Limpa logs antigos de execução de webhooks de entrada com base na política
     * de retenção configurada em settings.
     *
     * Remove registros da tabela webhook_call_log que:
     * - Foram criados há mais dias do que o valor de webhook-log-retention-days
     *
     * Os registros relacionados em webhook_action_log são removidos em cascata
     * pelo relacionamento FK com onDelete CASCADE.
     */
    private clearExpiredWebhookLogs;
    private clearOldAccessLogs;
    private clearOldNotifications;
}
//# sourceMappingURL=task.service.d.ts.map