blob: 067bdc288841e0023f9668137261d53646156f45 [file] [log] [blame]
<?php
declare(strict_types=1);
namespace Ddeboer\Imap;
use DateTimeInterface;
use Ddeboer\Imap\Message\PartInterface;
use Ddeboer\Imap\Search\ConditionInterface;
/**
* An IMAP mailbox (commonly referred to as a 'folder').
*
* @extends \IteratorAggregate<int, MessageInterface>
*/
interface MailboxInterface extends \Countable, \IteratorAggregate
{
/**
* Get mailbox decoded name.
*/
public function getName(): string;
/**
* Get mailbox encoded path.
*/
public function getEncodedName(): string;
/**
* Get mailbox encoded full name.
*/
public function getFullEncodedName(): string;
/**
* Get mailbox attributes.
*/
public function getAttributes(): int;
/**
* Get mailbox delimiter.
*/
public function getDelimiter(): string;
/**
* Get Mailbox status.
*/
public function getStatus(int $flags = null): \stdClass;
/**
* Bulk Set Flag for Messages.
*
* @param string $flag \Seen, \Answered, \Flagged, \Deleted, and \Draft
* @param array<int, int|string>|MessageIterator|string $numbers Message numbers
*/
public function setFlag(string $flag, $numbers): bool;
/**
* Bulk Clear Flag for Messages.
*
* @param string $flag \Seen, \Answered, \Flagged, \Deleted, and \Draft
* @param array<int, int|string>|MessageIterator|string $numbers Message numbers
*/
public function clearFlag(string $flag, $numbers): bool;
/**
* Get message ids.
*
* @param ConditionInterface $search Search expression (optional)
*/
public function getMessages(ConditionInterface $search = null, int $sortCriteria = null, bool $descending = false, string $charset = null): MessageIteratorInterface;
/**
* Get message iterator for a sequence.
*
* @param string $sequence Message numbers
*/
public function getMessageSequence(string $sequence): MessageIteratorInterface;
/**
* Get a message by message number.
*
* @param int $number Message number
*
* @return MessageInterface<PartInterface>
*/
public function getMessage(int $number): MessageInterface;
/**
* Get messages in this mailbox.
*/
public function getIterator(): MessageIteratorInterface;
/**
* Add a message to the mailbox.
*/
public function addMessage(string $message, string $options = null, DateTimeInterface $internalDate = null): bool;
/**
* Returns a tree of threaded message for the current Mailbox.
*
* @return array<string, int>
*/
public function getThread(): array;
/**
* Bulk move messages.
*
* @param array<int, int|string>|MessageIterator|string $numbers Message numbers
* @param MailboxInterface $mailbox Destination Mailbox to move the messages to
*
* @throws \Ddeboer\Imap\Exception\MessageMoveException
*/
public function move($numbers, self $mailbox): void;
/**
* Bulk copy messages.
*
* @param array<int, int|string>|MessageIterator|string $numbers Message numbers
* @param MailboxInterface $mailbox Destination Mailbox to copy the messages to
*
* @throws \Ddeboer\Imap\Exception\MessageCopyException
*/
public function copy($numbers, self $mailbox): void;
}