using CashLineERP.Contracts.Finance;

namespace CashLineERP.Application.Finance;

public interface ICardTokenReferenceService
{
    IReadOnlyCollection<CardTokenReferenceResponse> GetCardTokenReferences(bool activeOnly = false, long? partyId = null, string? integrationProviderCode = null, string? usageCode = null);

    CardTokenReferenceResponse? GetCardTokenReference(long cardTokenReferenceId);

    CardTokenReferenceResponse CreateCardTokenReference(CreateCardTokenReferenceRequest request);

    CardTokenReferenceResponse SubmitCardTokenReference(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceResponse ApproveCardTokenReference(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceResponse ActivateCardTokenReference(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceResponse SuspendCardTokenReference(long cardTokenReferenceId, long actorUserId, SuspendCardTokenReferenceRequest request);
}
