import { LitElement } from 'lit';
import type { INavigation, INavigationOptions, ISubscription, TAG_NAME_ROUTER } from './Declarations';
import type { RouteConfig } from './Route';
import { Route } from './Route';
declare global {
    interface HTMLElementTagNameMap {
        [TAG_NAME_ROUTER]: RouterElement2;
    }
}
/**
 * The `RouterElement2` element.
 *
 * Usage:
 * ```html
 * <mosaik-router-2></mosaik-router-2>
 * ```
 *
 * ```ts
 * const router = document.querySelector('mosaik-router-2');
 * router.setRoutes([
 *     { path: '/', component: 'home-page' },
 *     { path: '/about', component: 'about-page' },
 * ]);
 * ```
 *
 * @public
 */
export declare class RouterElement2 extends LitElement {
    private _currentRoute;
    private readonly _routes;
    private readonly _renderingTemplateTask;
    private _windowPopStateSubscription;
    private _windowClickSubscription;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Returns the list of registered routes.
     *
     * @public
     */
    routes(): Route[];
    /**
     * Retrieves query-string parameters from the current URL.
     *
     * @param name - Optional key to retrieve a single parameter value.
     * @returns An object of all query parameters, or a single value when `name` is provided.
     *
     * @example
     * ```ts
     * // URL: https://example.com?foo=bar&baz=qux
     * router.qs()      // { foo: 'bar', baz: 'qux' }
     * router.qs('foo') // 'bar'
     * ```
     *
     * @public
     */
    qs(name?: string): Record<string, string> | string | null;
    /**
     * Retrieves path parameters from the current route.
     *
     * @param name - Optional key to retrieve a single parameter value.
     * @returns An object of all path parameters, or a single value when `name` is provided.
     *
     * @example
     * ```ts
     * // URL: https://example.com/users/1
     * router.params() // { userId: '1' }
     * ```
     *
     * @public
     */
    params(name?: string): Record<string, string | undefined> | string | undefined;
    /**
     * Registers a callback that fires whenever the router state changes
     * (e.g. on `popstate`).
     *
     * @param callback - The callback to invoke.
     * @returns An `ISubscription` that can be used to unsubscribe.
     *
     * @public
     */
    onChange(callback: (router: RouterElement2) => void): ISubscription;
    /**
     * Adds a list of routes to the router configuration.
     *
     * @param routes - An array of partial route configurations.
     *
     * @example
     * ```ts
     * router.setRoutes([
     *     { path: '/', component: HomePage },
     *     { path: '/about', component: AboutPage },
     * ]);
     * ```
     *
     * @public
     */
    setRoutes(routes: Array<Partial<RouteConfig>>): void;
    /**
     * Navigates to a new route.
     *
     * @param navigation - The navigation target (path or href).
     * @param options - Optional navigation options.
     *
     * @example
     * ```ts
     * router.navigate({ path: '/about' });
     * router.navigate({ path: '/users', query: { page: '1' } });
     * ```
     *
     * @public
     */
    navigate(navigation: Partial<INavigation>, options?: Partial<INavigationOptions>): Promise<void>;
    /**
     * Navigates forward in session history.
     *
     * @public
     */
    forward(): void;
    /**
     * Navigates backward in session history.
     *
     * @public
     */
    back(): void;
    /**
     * @override
     */
    protected createRenderRoot(): HTMLElement;
    /**
     * @override
     */
    protected render(): unknown;
    /**
     * Finds a route matching the given path, searching recursively through
     * child routes when present.
     *
     * @param path - The pathname to match.
     * @param routes - The route list to search (defaults to all routes).
     * @param onlyLeafRoute - When `true`, only childless routes are returned.
     *
     * @private
     */
    private findRouteByPath;
    /**
     * Creates a `Route` from a partial config, validating required fields.
     *
     * @private
     */
    private createRouteFromConfig;
    /**
     * Recursively builds a route tree from a partial config, including
     * nested children.
     *
     * @private
     */
    private buildNestedRouteFromConfig;
    /**
     * Extracts parameters from a `URLSearchParams` or regex match.
     *
     * @private
     */
    private extractParameters;
    /**
     * Handles anchor clicks for in-page navigation.
     *
     * @private
     */
    private onHandleAnchorClick;
    /**
     * Handles popstate events (browser back/forward).
     *
     * @private
     */
    private onHandlePopState;
    /**
     * Finds an anchor element in the event's composed path.
     *
     * @param path - The composed event path.
     * @returns An `IRouterLinkLike` object if found, otherwise `undefined`.
     *
     * @private
     */
    private findAnchor;
}
/**
 * @public
 */
export declare namespace RouterElement2 {
    /**
     * Props interface for the `RouterElement2` element.
     *
     * @public
     */
    interface Props {
    }
}
/**
 * Alias for backward compatibility with auto-generated wrappers.
 *
 * @public
 */
export { RouterElement2 as Router2Element };
//# sourceMappingURL=RouterElement2.d.ts.map