import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../Controls/Components/Abstracts/CustomElement';
import type { IRouterNavigatedEventDetail } from '../Controls/events';
import { RouterController } from './Controllers/RouterController';
import type { IRouterElementProps } from './IRouterElementProps';
import { IRouterLocation } from './IRouterLocation';
import type { RouteConfig } from './Route/RouteConfig';
/**
 * The `RouterElement` element.
 *
 * @fires navigated {RouterNavigatedEvent} - Fired when the route has changed.
 *
 * @public
 */
export declare class RouterElement extends CustomElement implements IRouterElementProps {
    private readonly _routerController;
    private _location;
    private _locationStrategy;
    private readonly _navigated;
    private _useHash;
    private _activeRoute;
    private _scrollTargetFn;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Returns the `location` abstraction for the current routing strategy.
     * Provides hash-aware access to pathname, search params, and navigation.
     *
     * @public
     * @readonly
     */
    get location(): IRouterLocation;
    /**
     * Gets or sets the `useHash` property.
     *
     * @public
     * @attr
     */
    get useHash(): boolean;
    set useHash(value: boolean);
    /**
     * Gets or sets the `scrollRestoration` property.
     *
     * @public
     * @attr
     */
    get scrollRestoration(): ScrollRestoration;
    set scrollRestoration(value: ScrollRestoration);
    /**
     * Gets or sets the `routes` property.
     *
     * @public
     */
    get routes(): Array<RouteConfig>;
    set routes(value: Array<RouteConfig>);
    /**
     * Gets or sets the `scrollTargetFn` property.
     *
     * @public
     */
    get scrollTargetFn(): (() => Element | null) | null;
    set scrollTargetFn(value: (() => Element | null) | null);
    /**
     * Returns the `currentRoute` property.
     *
     * @public
     * @readonly
     */
    get currentRoute(): RouteConfig | null;
    /**
     * Returns the `previousRoute` property.
     *
     * @public
     * @readonly
     */
    get previousRoute(): RouteConfig | null;
    /**
     * Returns the `nextRoute` property.
     *
     * @public
     * @readonly
     */
    get nextRoute(): RouteConfig | null;
    /**
     * Called when the router has navigated to a new route.
     * Provides reference to `IRouterNavigatedEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get navigated(): IEventEmitter<IRouterNavigatedEventDetail>;
    /**
     * @public
     */
    navigate(name: string): Promise<boolean>;
    /**
     * @public
     */
    next(): Promise<boolean>;
    /**
     * @public
     */
    previous(): Promise<boolean>;
    /**
     * @public
     */
    outlet(): ReturnType<RouterController['outlet']>;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-router': RouterElement;
    }
}
//# sourceMappingURL=RouterElement.d.ts.map