using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Fuel.Payment.Core
{
    public interface IPaymentProcessor<in TOrder, out TProcessResult>
    {
        TProcessResult Process(TOrder order);
        TProcessResult Cancel(TOrder order);
        TProcessResult Query(TOrder order);
        TProcessResult Query(TOrder order, int count = 1, int interval = 2000);
        TProcessResult Return(TOrder order);
        TProcessResult UnifiedOrder(TOrder order);
        TProcessResult Initialize(TOrder order);
    }
}
