<?php

namespace App\Services\Providers\Contracts;

use App\Models\Transaction;
use App\Services\Providers\ProviderResponse;

interface ProviderInterface
{
    public function getBalance(?Transaction $transaction = null): array;

    public function getPlans(?Transaction $transaction = null): array;

    public function purchaseData(array $payload, ?Transaction $transaction = null): ProviderResponse;

    public function purchaseAirtime(array $payload, ?Transaction $transaction = null): ProviderResponse;

    public function purchaseCable(array $payload, ?Transaction $transaction = null): ProviderResponse;

    public function validateIuc(array $payload, ?Transaction $transaction = null): array;

    public function purchaseElectricity(array $payload, ?Transaction $transaction = null): ProviderResponse;

    public function validateMeter(array $payload, ?Transaction $transaction = null): array;

    public function purchaseEpin(array $payload, ?Transaction $transaction = null): ProviderResponse;

    public function queryTransaction(array $payload, ?Transaction $transaction = null): ProviderResponse;
}

