<?php

declare(strict_types=1);

namespace ImovelZapAi\Conversations\Application\Ports;

use ImovelZapAi\Conversations\Application\Data\CatalogReplyButton;
use ImovelZapAi\Conversations\Domain\Enums\MessagingProvider;
use ImovelZapAi\Conversations\Infrastructure\Persistence\Eloquent\TenantMessagingConfigModel;

interface MessagingAdapterInterface
{
    public function provider(): MessagingProvider;

    public function sendText(
        TenantMessagingConfigModel $config,
        string $recipientWaId,
        string $body,
    ): string;

    public function sendImage(
        TenantMessagingConfigModel $config,
        string $recipientWaId,
        string $imageUrl,
        string $caption,
    ): string;

    /**
     * @param  list<CatalogReplyButton>  $buttons
     */
    public function sendButtons(
        TenantMessagingConfigModel $config,
        string $recipientWaId,
        string $body,
        array $buttons,
        ?string $footer = null,
    ): string;
}
