<?php

namespace App\Framework\Smartlinks\Actions;

use App\Framework\Smartlinks\TokenAction;

interface ActionRegistry
{
    /**
     * Register an action
     */
    public function register(SmartlinkAction $action): void;

    /**
     * Get an action by name
     */
    public function get(TokenAction $action): ?SmartlinkAction;

    /**
     * Check if an action is registered
     */
    public function has(TokenAction $action): bool;

    /**
     * Get all registered actions
     */
    public function getAll(): array;

    /**
     * Unregister an action
     */
    public function unregister(TokenAction $action): void;
}
