using CashLineERP.Contracts.Finance;

namespace CashLineERP.Application.Finance;

public interface IWalletRuleService
{
    IReadOnlyCollection<WalletRuleResponse> GetWalletRules(bool activeOnly = false, string? integrationProviderCode = null, string? transactionTypeCode = null);

    WalletRuleResponse? GetWalletRule(long walletRuleId);

    WalletRuleResponse CreateWalletRule(CreateWalletRuleRequest request);

    WalletRuleResponse SubmitWalletRule(long walletRuleId, long actorUserId);

    WalletRuleResponse ApproveWalletRule(long walletRuleId, long actorUserId);

    WalletRuleResponse ActivateWalletRule(long walletRuleId, long actorUserId);

    WalletRuleEvaluationResponse EvaluateWalletRule(WalletRuleEvaluationRequest request);
}
