import { AnyRouter, Constrain, LinkOptions, RegisteredRouter, RoutePaths } from '@tanstack/router-core'; import { ReactNode } from 'react'; import { ValidateLinkOptions, ValidateLinkOptionsArray } from './typePrimitives.cjs'; import * as React from 'react'; export declare function useLinkProps(options: UseLinkPropsOptions, forwardedRef?: React.ForwardedRef): React.ComponentPropsWithRef<'a'>; type UseLinkReactProps = TComp extends keyof React.JSX.IntrinsicElements ? React.JSX.IntrinsicElements[TComp] : React.PropsWithoutRef ? TProps : never> & React.RefAttributes | React.Component<{ ref: infer TRef; }> ? TRef : never>; export type UseLinkPropsOptions | string = string, TTo extends string | undefined = '.', TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '.'> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & UseLinkReactProps<'a'>; export type ActiveLinkOptions = LinkOptions & ActiveLinkOptionProps; type ActiveLinkProps = Partial & { [key: `data-${string}`]: unknown; }>; export interface ActiveLinkOptionProps { /** * A function that returns additional props for the `active` state of this link. * These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated) */ activeProps?: ActiveLinkProps | (() => ActiveLinkProps); /** * A function that returns additional props for the `inactive` state of this link. * These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated) */ inactiveProps?: ActiveLinkProps | (() => ActiveLinkProps); } export type LinkProps = ActiveLinkOptions & LinkPropsChildren; export interface LinkPropsChildren { children?: React.ReactNode | ((state: { isActive: boolean; isTransitioning: boolean; }) => React.ReactNode); } type LinkComponentReactProps = Omit, keyof CreateLinkProps>; export type LinkComponentProps = LinkComponentReactProps & LinkProps; export type CreateLinkProps = LinkProps; export type LinkComponent = (props: LinkComponentProps) => React.ReactElement; export declare function createLink(Comp: Constrain ReactNode>): LinkComponent; export declare const Link: LinkComponent<'a'>; export type LinkOptionsFnOptions = TOptions extends ReadonlyArray ? ValidateLinkOptionsArray : ValidateLinkOptions; export type LinkOptionsFn = (options: LinkOptionsFnOptions) => TOptions; export declare const linkOptions: LinkOptionsFn<'a'>; export {};