
#ifdef HAVE_CONFIG_H
#include "../../../ext_config.h"
#endif

#include <php.h>
#include "../../../php_ext.h"
#include "../../../ext.h"

#include <Zend/zend_exceptions.h>

#include "kernel/main.h"


/**
 * This file is part of the Phalcon Framework.
 *
 * (c) Phalcon Team <team@phalcon.io>
 *
 * For the full copyright and license information, please view the LICENSE.txt
 * file that was distributed with this source code.
 */
/**
 * Interface for Phalcon\Cli\Router\Route
 *
 * Note: `Phalcon\Cli\Router` always constructs and returns the concrete
 * `Phalcon\Cli\Router\Route`, and there is no injection point for an externally
 * built route, so this interface is a marker for type hints rather than an
 * implementable contract. The fluent route API used in practice -
 * `beforeMatch()`, `getBeforeMatch()`, `convert()`, and `getConverters()` - is
 * declared on the concrete `Route` class, not here.
 *
 * @phpstan-import-type cli_route_paths from CliTypes
 * @phpstan-import-type cli_route_reversed_paths from CliTypes
 */
ZEPHIR_INIT_CLASS(Phalcon_Cli_Router_RouteInterface)
{
	ZEPHIR_REGISTER_INTERFACE(Phalcon\\Cli\\Router, RouteInterface, phalcon, cli_router_routeinterface, phalcon_cli_router_routeinterface_method_entry);

	return SUCCESS;
}

/**
 * Set the routing delimiter
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, delimiter);
/**
 * Get routing delimiter
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getDelimiter);
/**
 * Resets the internal route id generator
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, reset);
/**
 * Replaces placeholders from pattern returning a valid PCRE regular
 * expression
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, compilePattern);
/**
 * Returns the route's pattern
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getCompiledPattern);
/**
 * Returns the route's description
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getDescription);
/**
 * Returns the route's name
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getName);
/**
 * Returns the paths
 *
 * @phpstan-return cli_route_paths
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getPaths);
/**
 * Returns the route's pattern
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getPattern);
/**
 * Returns the paths using positions as keys and names as values
 *
 * @phpstan-return cli_route_reversed_paths
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getReversedPaths);
/**
 * Returns the route's id
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getRouteId);
/**
 * Reconfigure the route adding a new pattern and a set of paths
 *
 * @param array|string|null paths
 *
 * @return void
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, reConfigure);
/**
 * Sets the route's description
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, setDescription);
/**
 * Sets the route's name
 */
ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, setName);
