src/Services/PrepareServiceInterface.php
<?php
declare(strict_types=1);
namespace Bavix\Wallet\Services;
use Bavix\Wallet\Exceptions\AmountInvalid;
use Bavix\Wallet\External\Contracts\ExtraDtoInterface;
use Bavix\Wallet\Interfaces\Wallet;
use Bavix\Wallet\Internal\Dto\TransactionDtoInterface;
use Bavix\Wallet\Internal\Dto\TransferLazyDtoInterface;
use Bavix\Wallet\Models\Wallet as WalletModel;
/**
* @api
*/
interface PrepareServiceInterface
{
/**
* @param null|array<mixed> $meta
*
* @throws AmountInvalid
*/
public function deposit(
Wallet $wallet,
float|int|string $amount,
?array $meta,
bool $confirmed = true,
?string $uuid = null
): TransactionDtoInterface;
/**
* @param null|array<mixed> $meta
*
* @throws AmountInvalid
*/
public function withdraw(
Wallet $wallet,
float|int|string $amount,
?array $meta,
bool $confirmed = true,
?string $uuid = null
): TransactionDtoInterface;
/**
* @param ExtraDtoInterface|array<mixed>|null $meta
*
* @throws AmountInvalid
*/
public function transferLazy(
Wallet $from,
Wallet $to,
string $status,
float|int|string $amount,
ExtraDtoInterface|array|null $meta = null
): TransferLazyDtoInterface;
/**
* @param ExtraDtoInterface|array<mixed>|null $meta
*
* @throws AmountInvalid
*/
public function transferExtraLazy(
Wallet $from,
WalletModel $fromWallet,
Wallet $to,
WalletModel $toWallet,
string $status,
float|int|string $amount,
ExtraDtoInterface|array|null $meta = null
): TransferLazyDtoInterface;
}