import { type ComponentProps } from "react";
import type { UrlParser, ViewResult } from "./types";
import type { ViewRPC } from "./rpc";
import type { Prettify } from "../utils/type";
type Views = {
    [K in keyof ViewRPC as K extends `view:${infer P}` ? P : never]: ViewResult<K>;
};
type Search = Record<string, string | number | boolean | undefined | null>;
type LinkBaseProps<T extends keyof Views> = Omit<ComponentProps<"a">, "href"> & {
    active?: boolean;
    href: T;
    hash?: string;
    params: UrlParser<T>;
    search?: T extends keyof Views ? Views[T]["input"] extends Record<string, never> ? Search : Prettify<Partial<Views[T]["input"]> & Search> : Search;
};
type LinkProps<T extends keyof Views, U = UrlParser<T>> = U extends Record<string, never> ? Omit<LinkBaseProps<T>, "params"> : LinkBaseProps<T>;
export declare const Link: import("react").MemoExoticComponent<(<T extends keyof Views>(props: LinkProps<T>) => import("react/jsx-runtime").JSX.Element)>;
export {};
//# sourceMappingURL=Link.d.ts.map