import { z } from 'zod';
import { paymentProviderDataSchema, paymentProviderNameSchema, paymentStatusSchema } from './Payment.schema';

export type PaymentProviderName = z.infer<typeof paymentProviderNameSchema>;
export type PaymentStatus = z.infer<typeof paymentStatusSchema>;
export type PaymentProviderData = z.infer<typeof paymentProviderDataSchema>;

/**
 * @deprecated
 * TODO: REMOVE THIS INTERFACE, move it to the backend
 * Strategy interface for payment providers
 */
export interface PaymentProvider {
  /**
   * Confirm and validate a purchase from webhook payload
   */
  confirmPurchase(payload: any, signature?: string): Promise<PaymentProviderData>;

  /**
   * Validate webhook signature if provided
   */
  validateWebhookSignature?(payload: any, signature: string): boolean;

  /**
   * Get provider name
   */
  getProviderName(): string;
}
