import * as _emotion_react_jsx_runtime from '@emotion/react/jsx-runtime';
import { Theme } from '@emotion/react';
import { Interpolation } from '@emotion/styled';
import react__default, { MouseEventHandler } from 'react';
import { NavigateOptions, PathMatch } from 'react-router-dom';

type QueryParams = {
    [key: string]: string;
} | string;
type RouteParam = string;
type RouteParams = {
    [key: string]: RouteParam | QueryParams;
};
type RouteHash = string | null;
type ExternalLink = string;
type LinkProps<RoutesType extends string> = {
    to?: RoutesType | undefined;
    externalLink?: ExternalLink | undefined;
    onClick?: MouseEventHandler<HTMLAnchorElement> | undefined;
    params?: RouteParams | undefined;
    children?: react__default.ReactNode;
    css?: Interpolation<Theme>;
    className?: string;
    blue?: boolean;
    newTab?: boolean;
    hash?: RouteHash | undefined;
};
declare function replaceParams<RoutesType extends string>(to: RoutesType, params: LinkProps<RoutesType>["params"]): RoutesType;
declare function Link<RoutesType extends string>({ to, externalLink, params, children, css, onClick, className, hash, blue, newTab, }: LinkProps<RoutesType>): _emotion_react_jsx_runtime.JSX.Element;
type NavigateProps<RoutesType extends string> = Omit<LinkProps<RoutesType>, "children"> & {
    to: RoutesType;
    state?: unknown;
    replace?: boolean;
};
declare function Navigate<RoutesType extends string>({ to, params, state, replace, }: NavigateProps<RoutesType>): _emotion_react_jsx_runtime.JSX.Element;
declare function useNavigate<RoutesType extends string>(): (to: RoutesType | number, params?: LinkProps<RoutesType>["params"], options?: NavigateOptions) => void;
declare function useMatchRoutes<RoutesType extends string>(routes: RoutesType[]): boolean;
declare function useFindMatchingRoute<RoutesType extends string>(routes: RoutesType[]): RoutesType | undefined;
declare function useMatchRoute<RoutesType extends string>(route: RoutesType): PathMatch<string> | null;
declare function useCurrentRoute<RoutesType extends string>(): RoutesType;
declare function getRouteName<RoutesType extends string>(path: RoutesType, routes: {
    [key: string]: string;
}): string | null;

export { ExternalLink, Link, LinkProps, Navigate, QueryParams, RouteHash, RouteParams, getRouteName, replaceParams, useCurrentRoute, useFindMatchingRoute, useMatchRoute, useMatchRoutes, useNavigate };
