blob: 6289339a7af3113dbcce5596cc0ef66f35a32767 [file] [log] [blame]
<?php
declare(strict_types=1);
namespace Ddeboer\Imap;
use Ddeboer\Imap\Exception\CreateMailboxException;
use Ddeboer\Imap\Exception\DeleteMailboxException;
use Ddeboer\Imap\Exception\InvalidResourceException;
use Ddeboer\Imap\Exception\MailboxDoesNotExistException;
/**
* A connection to an IMAP server that is authenticated for a user.
*/
interface ConnectionInterface extends \Countable
{
/**
* Get IMAP resource.
*/
public function getResource(): ImapResourceInterface;
/**
* Delete all messages marked for deletion.
*/
public function expunge(): bool;
/**
* Close connection.
*/
public function close(int $flag = 0): bool;
/**
* Check if the connection is still active.
*
* @throws InvalidResourceException If connection was closed
*/
public function ping(): bool;
/**
* Get Mailbox quota.
*
* @return array<string, int>
*/
public function getQuota(string $root = 'INBOX'): array;
/**
* Get a list of mailboxes (also known as folders).
*
* @return MailboxInterface[]
*/
public function getMailboxes(): array;
/**
* Check that a mailbox with the given name exists.
*
* @param string $name Mailbox name
*/
public function hasMailbox(string $name): bool;
/**
* Get a mailbox by its name.
*
* @param string $name Mailbox name
*
* @throws MailboxDoesNotExistException If mailbox does not exist
*/
public function getMailbox(string $name): MailboxInterface;
/**
* Create mailbox.
*
* @throws CreateMailboxException
*/
public function createMailbox(string $name): MailboxInterface;
/**
* Delete mailbox.
*
* @throws DeleteMailboxException
*/
public function deleteMailbox(MailboxInterface $mailbox): void;
}