| 
<?php
 /*
 * This file is part of Chevere.
 *
 * (c) Rodolfo Berrios <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 declare(strict_types=1);
 
 namespace Chevere\VarDump\Interfaces;
 
 use Chevere\Parameter\Interfaces\TypeInterface;
 use Chevere\VarDump\Processors\ArrayProcessor;
 use Chevere\VarDump\Processors\BoolProcessor;
 use Chevere\VarDump\Processors\FloatProcessor;
 use Chevere\VarDump\Processors\IntProcessor;
 use Chevere\VarDump\Processors\NullProcessor;
 use Chevere\VarDump\Processors\ObjectProcessor;
 use Chevere\VarDump\Processors\ResourceProcessor;
 use Chevere\VarDump\Processors\StringProcessor;
 use Chevere\Writer\Interfaces\WriterInterface;
 
 /**
 * Describes the component in charge of handling variable dumping process.
 */
 interface VarDumperInterface
 {
 public const FILE = '_file';
 
 public const CLASS_REG = '_class';
 
 public const CLASS_ANON = 'class@anonymous';
 
 public const OPERATOR = '_operator';
 
 public const FUNCTION = '_function';
 
 public const MODIFIER = '_modifier';
 
 public const VARIABLE = '_variable';
 
 public const EMPHASIS = '_emphasis';
 
 /**
 * @var array<string, string>
 */
 public const PROCESSORS = [
 TypeInterface::BOOL => BoolProcessor::class,
 TypeInterface::ARRAY => ArrayProcessor::class,
 TypeInterface::OBJECT => ObjectProcessor::class,
 TypeInterface::INT => IntProcessor::class,
 TypeInterface::STRING => StringProcessor::class,
 TypeInterface::FLOAT => FloatProcessor::class,
 TypeInterface::NULL => NullProcessor::class,
 TypeInterface::RESOURCE => ResourceProcessor::class,
 ];
 
 /**
 * Provides access to the `$writer` instance.
 */
 public function writer(): WriterInterface;
 
 /**
 * Provides access to the `$format` instance.
 */
 public function format(): FormatInterface;
 
 /**
 * Provides access to the `$dumpable` instance.
 */
 public function dumpable(): VarDumpableInterface;
 
 /**
 * Return an instance with the specified `$indent`.
 *
 * This method MUST retain the state of the current instance, and return
 * an instance that contains the specified `$indent`.
 */
 public function withIndent(int $indent): self;
 
 /**
 * Provides access to the instance indent value.
 */
 public function indent(): int;
 
 /**
 * Provides access to the instance indent string.
 */
 public function indentString(): string;
 
 /**
 * Return an instance with the specified `$depth`.
 *
 * This method MUST retain the state of the current instance, and return
 * an instance that contains the specified `$depth`.
 */
 public function withDepth(int $depth): self;
 
 /**
 * Provides access to the instance `$depth`.
 */
 public function depth(): int;
 
 /**
 * Process the dump.
 */
 public function withProcess(): self;
 
 public function objectReferences(): ObjectIdsInterface;
 }
 
 |