import type { Component, Guard, ICustomRouterGuard } from './Declarations';
/**
 * Configuration object used to define a route.
 *
 * @public
 */
export type RouteConfig = Pick<Route, 'path' | 'component' | 'children' | 'beforeEnter'>;
/**
 * Represents a single route entry with path matching, component resolution,
 * nested children, and guard support.
 *
 * @public
 */
export declare class Route {
    /**
     * The path pattern for this route.
     *
     * @public
     * @readonly
     */
    readonly path: string;
    /**
     * The component to render when this route matches.
     *
     * Supports three forms:
     * - A tag-name string (e.g. `'my-page'`)
     * - An `HTMLElement` constructor
     * - A lazy-loading function returning a `Promise<HTMLElementConstructor>`
     *
     * @public
     * @readonly
     */
    readonly component: Component;
    /**
     * Nested child routes.
     *
     * @public
     */
    children: Array<Partial<RouteConfig>>;
    /**
     * Guard functions executed before the route is entered.
     * All guards must return `true` for navigation to proceed.
     *
     * @public
     */
    beforeEnter: Array<Guard>;
    /**
     * The compiled `URLPattern` instance derived from the route's `path`.
     *
     * @public
     * @readonly
     */
    readonly urlPattern: URLPattern;
    private _parent;
    /**
     * Creates a new `Route` instance.
     *
     * @param path - The URL path pattern.
     * @param component - The component to render when matched.
     *
     * @public
     */
    constructor(path: string, component: Component);
    /**
     * Assigns a parent route for hierarchical resolution.
     *
     * @param parent - The parent `Route` instance.
     *
     * @public
     */
    setParent(parent: Route): void;
    /**
     * Tests whether the given `path` matches this route's URL pattern.
     *
     * @param path - The pathname to test.
     * @returns `true` if the path matches.
     *
     * @public
     */
    match(path: string): boolean;
    /**
     * Recursively resolves all `beforeEnter` guards for this route
     * and its parent chain.
     *
     * @param router - The guard context providing navigation helpers.
     * @returns `true` if all guards pass.
     *
     * @public
     */
    resolveRecursiveGuard(router: ICustomRouterGuard): Promise<boolean>;
    /**
     * Resolves the component (including lazy-loaded modules) and, when a
     * parent exists, nests the result inside the parent component using the
     * Chain of Responsibility pattern.
     *
     * @param component - Optional factory returning the pre-resolved child element.
     * @returns The resolved `HTMLElement` (possibly wrapped in parent elements).
     *
     * @public
     */
    resolve(component?: () => HTMLElement): Promise<unknown>;
    /**
     * Resolves a single component reference to an `HTMLElement` instance.
     *
     * @param component - Tag name, constructor, or lazy-loader.
     *
     * @private
     */
    private resolveComponent;
}
//# sourceMappingURL=Route.d.ts.map