<?php

namespace App\Services\Payments\Contracts;

use App\Models\UserPaymentMethod;
use App\Services\Payments\GatewayResult;

interface PaymentGateway
{
    public function supports(string $provider): bool;

    public function charge(
        UserPaymentMethod $method,
        float $amount,
        string $currency,
        array $metadata = [],
    ): GatewayResult;

    public function payout(
        UserPaymentMethod $method,
        float $amount,
        string $currency,
        array $metadata = [],
    ): GatewayResult;
}
