using MktXService.Domain.SeedWork;

namespace MktXService.Domain.AggregatesModel.AutomationFlowAggregate;

public interface IAutomationFlowRepository : IRepository<AutomationFlow>
{
    AutomationFlow Add(AutomationFlow flow);
    void Update(AutomationFlow flow);
    void Delete(AutomationFlow flow);
    Task<AutomationFlow?> GetByIdAsync(Guid id);
    Task<AutomationFlow?> GetByIdWithNodesAsync(Guid id);
    Task<IEnumerable<AutomationFlow>> GetByMerchantIdAsync(Guid merchantId);
    Task<IEnumerable<AutomationFlow>> GetActiveByMerchantIdAsync(Guid merchantId);
    Task<IEnumerable<AutomationFlow>> GetByTriggerTypeAsync(Guid merchantId, string triggerType);
}
