<?php

declare(strict_types=1);

namespace ImovelZapAi\Publishing\Connectors\GroupOlx\Application\Ports;

use ImovelZapAi\Publishing\Connectors\GroupOlx\Application\Data\FeedStorageVersionData;
use ImovelZapAi\Publishing\Connectors\GroupOlx\Domain\Enums\FeedStorageDriver;

/**
 * Persistência versionada do feed VRSync (Grupo OLX).
 *
 * Implementações: Local e Cloudflare R2 — mesma interface.
 */
interface FeedStorageInterface
{
    /**
     * Salva XML, gera hash, versiona e atualiza a versão corrente.
     */
    public function store(string $tenantId, string $xml): FeedStorageVersionData;

    /**
     * Recupera a última versão (com metadados; XML opcionalmente carregado).
     */
    public function latest(string $tenantId, bool $withXml = true): ?FeedStorageVersionData;

    public function get(string $tenantId): ?string;

    public function exists(string $tenantId): bool;

    public function delete(string $tenantId): void;

    public function lastModified(string $tenantId): ?int;

    public function driver(): FeedStorageDriver;
}
