<?php

declare(strict_types=1);

namespace Apexl\Io\Interfaces;

/**
 * @deprecated Implement {@see HookInterface} instead, whose hooks() is static.
 *
 * Kept so that hooks written against the old contract keep working: ModuleManager falls
 * back to constructing one of these to ask it for its keys, which is the cost
 * HookInterface exists to avoid. The two cannot be merged — an interface method is either
 * static or it is not, and a class cannot satisfy both forms — so this stays until the
 * next major, where it goes.
 *
 * Named AbstractHook for historical reasons; it was never abstract, and never a class.
 */
interface AbstractHook
{
    /**
     * @return string[]
     */
    public function hooks(): array;
}
