<?php
declare(strict_types=1);

namespace Oscar\MailEngine\ImapClient;

interface ImapClientInterface
{
    // ... existing methods ...

    /**
     * Set flags on a message. Flags is a value object.
     */
    public function setFlags(string $uid, FlagSet $flags, string $accountId): bool;

    /**
     * Move a message to another folder.
     */
    public function move(string $uid, string $targetFolder, string $accountId): bool;

    /**
     * Search messages with text query + filter.
     */
    public function search(
        string $query,
        SearchFilter $filter,
        string $accountId,
        int $page = 1,
        int $pageSize = 8
    ): MessageList;

    /**
     * Get storage stats for an account.
     */
    public function getStorage(string $accountId): StorageStats;

    /**
     * Permanent delete (EXPUNGE).
     */
    public function delete(string $uid, string $accountId): bool;
}