1<?php declare(strict_types=1);
2
3/*
4 * This file is part of the Monolog package.
5 *
6 * (c) Jordi Boggiano <j.boggiano@seld.be>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Monolog\Handler;
13
14use Monolog\Processor\ProcessorInterface;
15
16/**
17 * Interface to describe loggers that have processors
18 *
19 * @author Jordi Boggiano <j.boggiano@seld.be>
20 *
21 * @phpstan-import-type Record from \Monolog\Logger
22 */
23interface ProcessableHandlerInterface
24{
25    /**
26     * Adds a processor in the stack.
27     *
28     * @psalm-param ProcessorInterface|callable(Record): Record $callback
29     *
30     * @param  ProcessorInterface|callable $callback
31     * @return HandlerInterface            self
32     */
33    public function pushProcessor(callable $callback): HandlerInterface;
34
35    /**
36     * Removes the processor on top of the stack and returns it.
37     *
38     * @psalm-return ProcessorInterface|callable(Record): Record $callback
39     *
40     * @throws \LogicException             In case the processor stack is empty
41     * @return callable|ProcessorInterface
42     */
43    public function popProcessor(): callable;
44}
45