<?php

namespace RadiusTheme\RadiusBooking\Interfaces;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}
/**
 * Payment Gateway Interface
 *
 * All payment gateways must implement this interface
 */
interface PaymentGatewayInterface {

	/**
	 * Process a payment
	 *
	 * @param array $paymentData Payment data including amount, customer info, etc.
	 *
	 * @return array Response with status, transaction_id, message, etc.
	 */
	public function processPayment( array $paymentData ): array;

	/**
	 * Verify/validate a payment
	 *
	 * @param string $transactionId Transaction ID to verify
	 *
	 * @return array Verification result
	 */
	public function verifyPayment( string $transactionId ): array;

	/**
	 * Refund a payment
	 *
	 * @param string $transactionId Transaction ID to refund
	 * @param float $amount Amount to refund
	 *
	 * @return array Refund result
	 */
	public function refundPayment( string $transactionId, float $amount ): array;

	/**
	 * Get payment gateway name
	 *
	 * @return string Gateway identifier (stripe, paypal, offline, etc.)
	 */
	public function getGatewayName(): string;

	/**
	 * Check if gateway is configured and ready
	 *
	 * @return bool
	 */
	public function isConfigured(): bool;
}
