*/ public function capabilities(): array; /** * @template TResult * @param CommandInterface $command * @return TResult */ public function perform(CommandInterface $command): mixed; /** * Stream the raw bytes of a single IMAP BODY section without buffering. * * @return \Generator raw (transfer-encoded) bytes from the socket */ public function download(FetchTarget $target, string $section, int $chunkSize = 8192): \Generator; }