import {
  PaymentGatewayOrder,
  PaymentGatewayCheckout,
  PaymentGatewayVerify,
  PaymentGatewayCapture,
  PaymentGatewayRefund,
  PaymentGatewayStatus,
} from '../dto/payment.dto';

export interface IPaymentGateway {
  createOrder(order: any): Promise<PaymentGatewayOrder>;
  createCheckout(checkout: any): Promise<PaymentGatewayCheckout>;
  verifyPayment(payload: any): Promise<PaymentGatewayVerify>;
  capturePayment(paymentId: string, amount: number): Promise<PaymentGatewayCapture>;
  refundPayment(transactionId: string, amount: number, reason?: string): Promise<PaymentGatewayRefund>;
  paymentStatus(transactionId: string): Promise<PaymentGatewayStatus>;
  handleCallback(payload: any): Promise<any>;
  handleWebhook(payload: any, signature?: string): Promise<any>;
  generateReceipt(paymentId: string): Promise<any>;
  cancelPayment(paymentId: string): Promise<any>;
}
