import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../Controls/Components/Abstracts/CustomElement';
import { RouterController } from './Controllers/RouterController';
import type { IRouterNavigatedEventDetail } from './Events/IRouterNavigatedEventDetail';
import type { IRouterElementProps } from './IRouterElementProps';
import type { RouteConfig } from './Route/RouteConfig';
/**
 * The `{@link RouterElement}` element.
 *
 * @fires navigated - Fired when the route has changed.
 *
 * @public
 */
export declare class RouterElement extends CustomElement implements IRouterElementProps {
    private readonly _routerController;
    private readonly _location;
    private readonly _navigated;
    private _useHash;
    private _activeRoute;
    private _scrollTargetFn;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * 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 `{@link 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;
    }
    interface HTMLElementEventMap {
        navigated: CustomEvent<IRouterNavigatedEventDetail>;
    }
}
//# sourceMappingURL=RouterElement.d.ts.map