namespace CashLineERP.Application.Finance;

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

    CardTokenReferenceDetailView? GetCardTokenReference(long cardTokenReferenceId);

    CardTokenReferenceDetailView Create(CreateCardTokenReferenceCommand command);

    CardTokenReferenceDetailView Submit(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceDetailView Approve(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceDetailView Activate(long cardTokenReferenceId, long actorUserId);

    CardTokenReferenceDetailView Suspend(long cardTokenReferenceId, long actorUserId, SuspendCardTokenReferenceCommand command);
}
