import type { MatchOptions, MatchResult } from 'path-to-regexp';
import type { RenderOptions } from '../models/render-options.js';
export interface Route<TMatchResult = unknown> {
    url: string;
    component: (options: {
        currentUrl: string;
        match: MatchResult<TMatchResult extends object ? TMatchResult : object>;
    }) => JSX.Element;
    routingOptions?: MatchOptions;
    onVisit?: (options: RenderOptions<unknown>) => Promise<void>;
    onLeave?: (options: RenderOptions<unknown>) => Promise<void>;
}
export interface RouterProps {
    style?: CSSStyleDeclaration;
    routes: Array<Route<any>>;
    notFound?: JSX.Element;
}
export interface RouterState {
    activeRoute?: Route<any> | null;
    activeRouteParams?: any;
    jsx: JSX.Element;
}
export declare const Router: (props: RouterProps & Omit<Partial<HTMLElement>, "style"> & {
    style?: Partial<CSSStyleDeclaration>;
}, children?: import("../index.js").ChildrenList) => JSX.Element;
//# sourceMappingURL=router.d.ts.map