<?php
/**
 * Route Facade
 *
 * @package Licenzo\Framework\Support\Facades
 */

namespace Licenzo\Framework\Support\Facades;

use Licenzo\Framework\Contracts\Router\Route as RouteContract;
use Licenzo\Framework\Contracts\Router\RouteGroup;
use Licenzo\Framework\Http\Router\Router;

// Prevent direct access
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Route facade for static access to router
 *
 * @method static RouteContract get(string $uri, mixed $action)
 * @method static RouteContract post(string $uri, mixed $action)
 * @method static RouteContract put(string $uri, mixed $action)
 * @method static RouteContract delete(string $uri, mixed $action)
 * @method static RouteContract patch(string $uri, mixed $action)
 * @method static void group(array $attributes, \Closure $callback)
 * @method static RouteGroup middleware(string|array $middleware)
 * @method static RouteGroup policy(string $policy)
 * @method static void loadRoutes(string $filePath)
 * @method static RouteContract|null match(\Licenzo\Framework\Http\Request $request)
 * @method static void register()
 * @method static array getRoutes()
 * @method static void addNamedRoute(string $name, RouteContract $route)
 * @method static RouteContract|null getNamedRoute(string $name)
 * @method static Router cache(bool $enabled = true)
 */
class Route extends Facade
{
    /**
     * Get the router instance
     *
     * @return Router|string
     */
    protected static function getFacadeAccessor()
    {
        return \Licenzo\Framework\Contracts\Router\Router::class;
    }
}
