export interface PaymentLinkResult {
  paymentLink: string;
  paymentReference: string;
  gatewayReference?: string;
}

export interface SeamlessPaymentResult {
  paymentReference: string;
  pollUrl?: string;
  gatewayReference?: string;
}

export interface PaymentVerificationResult {
  status: 'SUCCESS' | 'FAILED' | 'PENDING';
  gatewayReference?: string;
  amount?: number;
  rawResponse?: string;
}

export interface PaymentGateway {
  createPaymentLink(
    orderId: string,
    amount: number,
    currency: string,
    customerEmail: string,
    callbackUrl: string,
  ): Promise<PaymentLinkResult>;

  makeSeamlessPayment(
    orderId: string,
    amount: number,
    currency: string,
    ecocashNumber: string,
    customerEmail: string,
    reason: string,
    callbackUrl: string,
  ): Promise<SeamlessPaymentResult>;

  verifyPayment(paymentReference: string): Promise<PaymentVerificationResult>;
}
