<?php
namespace EasyInvoice\Interfaces;

interface PaymentGatewayInterface {
    /**
     * Initialize the payment gateway
     */
    public function init(): void;

    /**
     * Process the payment
     * 
     * @param float $amount Payment amount
     * @param array $data Additional payment data
     * @return array Payment response
     */
    public function processPayment(float $amount, array $data = []): array;

    /**
     * Handle payment callback/webhook
     * 
     * @param array $data Callback data
     * @return array Response data
     */
    public function handleCallback(array $data): array;

    /**
     * Get payment gateway settings
     * 
     * @return array Gateway settings
     */
    public function getSettings(): array;

    /**
     * Get payment gateway name
     * 
     * @return string Gateway name
     */
    public function getName(): string;

    /**
     * Check if payment gateway is enabled
     * 
     * @return bool
     */
    public function isEnabled(): bool;
} 