type Constructor<T = object> = new (...args: any[]) => T;
export interface IRoute {
    /**
     * The route pattern to evaluate
     */
    pattern?: string;
    /**
     * Whether to call this method when a navigation occurs
     * and the router function couldn't find a match.
     *
     * Can be combined with a patter to define a default route.
     * Setting this multiple times on different route won't change
     * the fallback route. The first matched route will be called.
     */
    fallback?: boolean;
    /**
     * Optional name to pass to the route callback.
     */
    name?: string;
    /**
     * When set it automatically updated the document title on route.
     */
    title?: string;
    /**
     * The class method to call when the route is matched.
     */
    method: string;
}
export interface IRouteResult {
    /**
     * The matched route
     */
    route: IRoute;
    /**
     * Captured parameters
     */
    params?: Record<string, string | string[]>;
}
export declare class RouteMixinInterface {
    /**
     * The list of routes to handle.
     */
    static get routes(): IRoute[];
    /**
     * The current route parameters. This is the same what is passed to the route handler.
     */
    protected currentRoute?: IRouteResult;
    /**
     * Initializes the routing.
     */
    initializeRouting(): void;
    /**
     * A handler when route change.
     */
    protected _routeHandler(): void;
    /**
     * Navigates to an internal route.
     *
     * @param route Optional route params to add to the hash part of the url.
     */
    navigate(...route: string[]): void;
}
export declare function RouteMixin<T extends Constructor<object>>(superClass: T): Constructor<RouteMixinInterface> & T;
export {};
//# sourceMappingURL=RouteMixin.d.ts.map